如何从opencv 3.0 Beta中的文件中读取UMat?

man*_*ans 12 c++ opencv opencl

我想使用,UMat所以我的代码可以使用OpenCL(Op​​enCV 3.0.0 Beta)在GPU和CPU上运行.

但我找不到一种方法将图像文件读入UMat或转换MatUMat.

如何将图像读入UMat

Kir*_*ran 16

样品MatUMat转换如下.Coudlnt'为此找到文档.因此,唯一的选择是阅读.

UMat img = imread( "lena.jpg", IMREAD_COLOR  ).getUMat( ACCESS_READ );
Run Code Online (Sandbox Code Playgroud)

中的不同访问标志是

ACCESS_READ, ACCESS_WRITE, ACCESS_RW, ACCESS_FAST
Run Code Online (Sandbox Code Playgroud)

对于未UMat使用的,可在此处获得完整的人脸检测样本 .另请注意,文档仍将较旧的标志称为imread第二个参数.您可能需要在OpenCV头文件中使用较新的标志.


y43*_*34y -2

您可以使用方法将 cv::Mat 转换(复制基础数据)到 cv::UMat,反之亦然copyTo

这是示例代码,使用cv::UMat

//VideoCapture tCapturer("2.avi"); // source is set to be the clip
VideoCapture tCapturer(0); // source is set to be the camera
UMat tUFrame;

if (!tCapturer.isOpened())
{
    cout << "Could not open video file!" << endl;
    getchar();
    return -1;
}
else
{
    cout << "Video file has been opened successfully!" << endl;
    getchar();
}

namedWindow("video", 1);

while (true)
{
    if (!tClip.read(tUFrame)) // get a new frame from camera
    {
        break;
    }

    Mat tRegularFrame;
    tUFrame.copyTo(tRegularFrame);

    imshow("video", tRegularFrame);

    if (waitKey(30) >= 0)
    {
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)