2017-02-04 17 views
2

OpenCL UMatとOpenCL Matのそれを比較しています。私はcvtColor()関数を500回実行します。OpenCL copyto()はより多くの時間を消費します

int OpenCL_UMat() 
{ 
    Mat img; 
    UMat uimage, U1; 
    img = imread("image_path"); 
    for (int i = 1; i < 500; i++) 
    { 
     img.copyTo(uimage); // Here it takes 1 sec 
     cvtColor(uimage, U1, CV_BGR2GRAY); 
    } 
    imshow("image1", U1); 
    return 0; 
} 

int OpenCL_Mat() 
{ 
    Mat img, img1; 
    img = imread("image_path"); 
    for (int i = 1; i < 500; i++) 
    { 
     cvtColor(img, img1, CV_BGR2GRAY); 
    } 
    imshow("image1", img); 
    return 0; 
} 

マイクロコードの出力は
_________________________________
あり| OpenCL UMat = 2368720マイクロ秒 - |
| _________________________________ |
| OpenCL Mat = 312200マイクロ秒---- |
| _________________________________ |

上記のコードから、copyto()関数は、RAMからGPUにイメージをロードする時間が必要であることがわかっています。したがって、copyto()関数を実行すると、実行に1秒かかります。

私は直接UMatを利用できるオプションはありますか?あなたが使用することができます。この
UMat img = imread("image_path");

答えて

2

よう
何かが

UMat img = imread("image_path").getUMat(ACCESS_READ); 
+1

は、返信いただきありがとうございます。どのようにWebカメラを進めるのですか? 'VideoCapture'が使われているときは' .getUmat(ACCESS_READ) 'を使うことはできません。 –

+1

@SurakshaAjith VideoCaptureは抽出演算子 'virtual VideoCapture&operator >>(UMat&image)'をオーバーロードしていますので、 'capture >> frame'のようなフレームを取得できます。 – w1ck3dg0ph3r

関連する問題