Beispiel #1
0
 int test4colorReduce(int argc,char** argv){
	 cv::Mat image=cv::imread( inputImagePath );
	 //show the original
	 IplImage ori4image=image;
	 alert_win( &ori4image );

	 colorReduce3(image);
	 //then show the result
	 IplImage rs4image=image;
	 alert_win( &rs4image );
  	return 0;
  }
Beispiel #2
0
int main()
{
	int64 t[NTESTS],tinit;
	cv::Mat image1;
	cv::Mat image2;

	// timer values set to 0
	for (int i=0; i<NTESTS; i++)
		t[i]= 0;

	// repeat the tests several times
	int n=NITERATIONS;
	for (int k=0; k<n; k++) {

		std::cout << k << " of " << n << std::endl; 

		image1= cv::imread("../image.jpg");
	    if (!image1.data)
		   return 0; 

		// using .ptr and []
	    tinit= cv::getTickCount();
		colorReduce0(image1);
		t[0]+= cv::getTickCount()-tinit;

		image1= cv::imread("../image.jpg");
		// using .ptr and * ++ 
	    tinit= cv::getTickCount();
		colorReduce1(image1);
		t[1]+= cv::getTickCount()-tinit;

		image1= cv::imread("../image.jpg");
		// using .ptr and * ++ and modulo
	    tinit= cv::getTickCount();
		colorReduce2(image1);
		t[2]+= cv::getTickCount()-tinit;

		image1= cv::imread("../image.jpg");
		// using .ptr and * ++ and bitwise
	    tinit= cv::getTickCount();
		colorReduce3(image1);
		t[3]+= cv::getTickCount()-tinit;

		image1= cv::imread("../image.jpg");
		// using direct pointer arithmetic
	    tinit= cv::getTickCount();
		colorReduce4(image1);
		t[4]+= cv::getTickCount()-tinit;

		image1= cv::imread("../image.jpg");
		// using .ptr and * ++ and bitwise with image.cols * image.channels()
	    tinit= cv::getTickCount();
		colorReduce5(image1);
		t[5]+= cv::getTickCount()-tinit;

		image1= cv::imread("../image.jpg");
		// using .ptr and * ++ and bitwise (continuous)
	    tinit= cv::getTickCount();
		colorReduce6(image1);
		t[6]+= cv::getTickCount()-tinit;

		image1= cv::imread("../image.jpg");
		// using .ptr and * ++ and bitwise (continuous+channels)
	    tinit= cv::getTickCount();
		colorReduce7(image1);
		t[7]+= cv::getTickCount()-tinit;

		image1= cv::imread("../image.jpg");
		// using Mat_ iterator
	    tinit= cv::getTickCount();
		colorReduce8(image1);
		t[8]+= cv::getTickCount()-tinit;

		image1= cv::imread("../image.jpg");
		// using Mat_ iterator and bitwise
	    tinit= cv::getTickCount();
		colorReduce9(image1);
		t[9]+= cv::getTickCount()-tinit;

		image1= cv::imread("../image.jpg");
		// using Mat_ iterator 
	    tinit= cv::getTickCount();
		colorReduce10(image1);
		t[10]+= cv::getTickCount()-tinit;

		image1= cv::imread("../image.jpg");
		// using at 
	    tinit= cv::getTickCount();
		colorReduce11(image1);
		t[11]+= cv::getTickCount()-tinit;
		
		image1= cv::imread("../image.jpg");
		// using input/output images 
	    tinit= cv::getTickCount();
		cv::Mat result;
		colorReduce12(image1, result);
		t[12]+= cv::getTickCount()-tinit;

		image2= result;
		
		image1= cv::imread("../image.jpg");
		// using input/output images 
	    tinit= cv::getTickCount();
		colorReduce13(image1);
		t[13]+= cv::getTickCount()-tinit;

		//------------------------------
	}
	    
	cv::namedWindow("Result");
	cv::imshow("Result",image2);
	cv::namedWindow("Image Result");
	cv::imshow("Image Result",image1);

	// print average execution time
	std::cout << std::endl << "-------------------------------------------" << std::endl << std::endl;
	std::cout << "using .ptr and [] =" << 1000.*t[0]/cv::getTickFrequency()/n << "ms" << std::endl;
	std::cout << "using .ptr and * ++ =" << 1000.*t[1]/cv::getTickFrequency()/n << "ms" << std::endl;
	std::cout << "using .ptr and * ++ and modulo =" << 1000.*t[2]/cv::getTickFrequency()/n << "ms" << std::endl;
	std::cout << "using .ptr and * ++ and bitwise =" << 1000.*t[3]/cv::getTickFrequency()/n << "ms" << std::endl;
	std::cout << "using direct pointer arithmetic =" << 1000.*t[4]/cv::getTickFrequency()/n << "ms" << std::endl;
	std::cout << "using .ptr and * ++ and bitwise with image.cols * image.channels() =" << 1000.*t[5]/cv::getTickFrequency()/n << "ms" << std::endl;
	std::cout << "using .ptr and * ++ and bitwise (continuous) =" << 1000.*t[6]/cv::getTickFrequency()/n << "ms" << std::endl;
	std::cout << "using .ptr and * ++ and bitwise (continuous+channels) =" << 1000.*t[7]/cv::getTickFrequency()/n << "ms" << std::endl;
	std::cout << "using Mat_ iterator =" << 1000.*t[8]/cv::getTickFrequency()/n << "ms" << std::endl;
	std::cout << "using Mat_ iterator and bitwise =" << 1000.*t[9]/cv::getTickFrequency()/n << "ms" << std::endl;
	std::cout << "using MatIterator_ =" << 1000.*t[10]/cv::getTickFrequency()/n << "ms" << std::endl;	
	std::cout << "using at =" << 1000.*t[11]/cv::getTickFrequency()/n << "ms" << std::endl;	
	std::cout << "using input/output images =" << 1000.*t[12]/cv::getTickFrequency()/n << "ms" << std::endl;	
	std::cout << "using overloaded operators =" << 1000.*t[13]/cv::getTickFrequency()/n << "ms" << std::endl;	
	
	cv::waitKey();
	return 0;
}