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; }
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; }