使用带有大图像的TAPI(cv :: UMat)断言失败 - OpenCV

时间:2016-04-11 12:52:52

标签: image opencv image-processing opencl assertion

在以下代码中使用OpenCV TAPI(cv::UMat)时出现断言失败:

    for (int i = 0; i < N; ++i) {
        cv::extractChannel(img_vec[i], alpha_vec[i], 3);
        cv::cvtColor(img_vec[i], img_vec[i], CV_BGRA2BGR);
    }

代码在第五次迭代中崩溃,就在运行cv::cvtColor(img_vec[i], img_vec[i], CV_BGRA2BGR)之后。

输出消息是:

  

OpenCV错误:断言失败(clEnqueueReadBuffer(q,   (cl_mem)u-&gt; handle,CL_TRUE,0,u-&gt; size,alignedPtr.getAlignedPtr(),0,   地图,文件中的0,0)== CL_SUCCESS)   C:\ OpenCV-3.1.0 \ sources \ modules \ core \ src \ ocl.cpp,第4758行

     

此应用程序已请求运行时将其终止   不寻常的方式请联系应用程序的支持团队获取更多信息   信息。抛出一个实例后终止调用   &#39; CV ::异常&#39;什么():   C:\ OpenCV-3.1.0 \ sources \ modules \ core \ src \ ocl.cpp:4758:错误:( - 215)   clEnqueueReadBuffer(q,(cl_mem)u-&gt; handle,CL_TRUE,0,u-&gt; size,   alignedPtr.getAlignedPtr(),0,0,0)==功能映射中的CL_SUCCESS

只有大图像(> 20Mp)才会发生。如果我不使用TAPI(cv::Mat)或禁用OpenCL(cv::ocl::setUseOpenCL(false)),则代码正常工作。我使用的是3.1.0版本。

为什么会这样?有没有办法让它支持GPU?

0 个答案:

没有答案