2012-10-23 17 views
5

OpenCV関数のsrc(ソース)とdst(デスティネーション)に異なる変数を持つことが処理時間に影響を与えるかどうかを知りたいと思います。私は同じことをする 以下の2つの機能を持っています。優れている2のOpenCV Mat処理時間

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, new Scalar(20, 100, 100), new Scalar(30, 255, 255), mMattemp_ir); 
    return mMattemp_ir; 
} 

VERSUS

public static Mat getY(Mat m){ 
    Mat mMattemp = new Mat(); 
    Imgproc.cvtColor(m,mMattemp,Imgproc.COLOR_YUV420sp2RGB); 
    Imgproc.cvtColor(mMattemp,mMattemp, Imgproc.COLOR_RGB2HSV); 
    Core.inRange(mMattemp, new Scalar(20, 100, 100), new Scalar(30, 255, 255), mMattemp); 
    return mMattemp; 
} 

?一方の利点は何ですか?確かに知っている

+0

http://codereview.stackexchange.com/ – ArtemStorozhuk

+0

私が知る限り、どちらが良いかは、各機能によって異なります。私は別のdst(意図的に作成していない場合)をdst == srcと同じかそれ以上にすると仮定できます。 –

+0

時間/プロファイルそれ.. – volting

答えて

3

、ちょうどあなたのgetY方法は、(Javaへの変換が必要になります)、このようなOpenCVののビルトインメソッドdouble getTickCount()double getTickFrequency()間の通話挟ん:最良の結果を得るために

//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); 

は、複数の呼び出しのためにこれを行います結果を平均化する。

関連する問題