我正在尝试使用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
关于如何解决这个问题的任何想法?
答案 0 :(得分:6)
解决方案是:
Mat src;
src = cv::imread("...");
GpuMat dst;
dst.upload(src);
答案 1 :(得分:4)
我相信它会在GpuMat
构造函数中抛出断言,因为对imread
的调用返回null,因此您的Gpu矩阵为空/未定义。
这意味着由于文件丢失,权限不当或格式不受支持或无效,无法读取您的图片。
确认 baboon.jpg 存在于运行程序的目录中,同时验证您的映像文件是否具有正确的权限且未损坏。