Java – opencv mat processing time
•
Java
I want to know whether the SRC (source) and DST (destination) of OpenCV function have different variables that will affect the processing time I have the following two functions
public static Mat getY(Mat m){
Mat mMattemp = new Mat();
Imgproc.cvtColor(m,mMattemp,Imgproc.COLOR_YUV420sp2RGB);
Imgproc.cvtColor(mMattemp,Imgproc.COLOR_RGB2HSV);
Core.inRange(mMattemp,new Scalar(20,100,100),new Scalar(30,255,255),mMattemp);
return mMattemp;
}
And
public static Mat getY(Mat m){
Mat mMattemp_rgb = new Mat();
Mat mMattemp_hsv = new Mat();
Mat mMattemp_ir = new Mat();
Imgproc.cvtColor(m,mMattemp_rgb,Imgproc.COLOR_YUV420sp2RGB);
Imgproc.cvtColor(mMattemp_rgb,mMattemp_hsv,Imgproc.COLOR_RGB2HSV);
Core.inRange(mMattemp_hsv,mMattemp_ir);
return mMattemp_ir;
}
Which two are better? What are the advantages of one over the other?
Solution
To know exactly, just clip your gety method call between opencv's built-in methods double gettickcount() and double gettickfrequency() (need to be converted to Java):
//first uniquely name the algorithms to compare (here just getY_TypeA and getY_TypeB)
double durationA = cv::getTickCount();
getY_TypeA(image); // the function to be tested
durationA = cv::getTickCount()-durationA;
durationA /= cv::getTickFrequency(); // the elapsed time in ms
//Now call the other method
double durationB = cv::getTickCount();
getY_TypeB(image); // the function to be tested
durationB = cv::getTickCount()-durationB;
durationB /= cv::getTickFrequency(); // the elapsed time in ms
printf("Type A runtime: "+durationA+" Type B runtime: "+durationB);
For best results, do this on multiple calls and evaluate the results
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
