OpenCV的GpuMat使用

问题描述:

我尝试使用OpenCV的GpuMat但我发现了一个断言错误,我的代码如下OpenCV的GpuMat使用

#include "opencv2/opencv.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 
#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/gpu/gpu.hpp" 

// ... 

using namespace cv; 
using namespace cv::gpu; 

int main() 
{ 
    string baboon = "baboon.jpg"; 
    try 
    { 
     DeviceInfo info = getDevice(); 
     cout << info.name() << endl; 

     GpuMat src; 

     src = cv::imread(baboon, 1); 
    } 
    catch (const cv::Exception* ex) 
    { 
     cout << "Error: " << ex->what() << endl; 
    } 
} 

输出是:

GeForce GTX 550 Ti 
OpenCV Error: Assertion failed (!m.empty()) in unknown function, file ($PATH_TO_OPENCV)\opencv\modules\gpu\src\gpumat.cpp, line 411 

如何任何想法解决这个问题?

解决的办法是:

Mat src; 

src = cv::imread("..."); 

GpuMat dst; 

dst.upload(src); 
+0

它不应该只是被dst.upload(SRC); ? – 2013-12-03 19:45:55

+0

是的,它应该是'dst.upload(src)'; – 2014-07-13 19:58:08

我相信它会在GpuMat的构造函数中抛出断言,因为你对imread的调用返回null,因此你的Gpu矩阵是空的/未定义的。

这意味着您的图片无法被读取,原因可能是文件丢失,权限不当或格式不受支持或无效。

验证baboon.jpg在同一个目录中,你正在运行的程序存在,也确认您的图像文件具有正确的权限并没有损坏。

+0

你是对的; d THX – JohnnyAce 2012-02-16 21:06:01