Я сравниваю OpenCL UMat
с этим из OpenCL Mat
Я бегу cvtColor()
функционировать в 500 раз.
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()
Функция требует времени для загрузки образа из ОЗУ в графический процессор, поэтому при запуске функции copyto () она занимает 1 секунду для выполнения.
Есть ли вариант, где я могу напрямую использовать UMat.
Что-то вроде этого
UMat img = imread("image_path");
Ты можешь использовать
UMat img = imread("image_path").getUMat(ACCESS_READ);
Других решений пока нет …