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");
は、返信いただきありがとうございます。どのようにWebカメラを進めるのですか? 'VideoCapture'が使われているときは' .getUmat(ACCESS_READ) 'を使うことはできません。 –
@SurakshaAjith VideoCaptureは抽出演算子 'virtual VideoCapture&operator >>(UMat&image)'をオーバーロードしていますので、 'capture >> frame'のようなフレームを取得できます。 – w1ck3dg0ph3r