发布时间:2023-04-20 文章分类:电脑百科 投稿人:王小丽 字号: 默认 | | 超大 打印

使用"Opencv"时遇到terminate called after throwing an instance of 'cv::Exception'的问题的解决方案

这个问题的全称为

terminate called after throwing an instance of ‘cv::Exception’

what(): OpenCV(3.4.16) /home/seu/wsh/study/ch5/opencv-3.4.16/modules/imgproc/src/median_blur.dispatch.cpp:283: error: (-215:Assertion failed) !_src0.empty() in function ‘medianBlur’

针对这个问题啊,我呢很是苦恼,费了九牛二虎之力,最终啊,还是解决了。

首先呢,先说一下环境,这个呢是在ubuntu上使用opencv时遇到的问题。就是学习《视觉SLAM十四讲》时,第五讲遇到的问题,在此记录一下,避免后面的人采坑。

经过我在网上查了查,有人说是opencv安装时,安装的问题或者是依赖没有安装的问题。
这里是对应的解决方案.

经过我一顿操作,结果呢

使用“Opencv“时遇到terminate called after throwing an instance of ‘cv::Exception‘问题的解决方案

还是这样。。。

然后我就又找了一个回答,就是上边那个链接下面的那个评论,

使用“Opencv“时遇到terminate called after throwing an instance of ‘cv::Exception‘问题的解决方案

我试了一下,结果
使用“Opencv“时遇到terminate called after throwing an instance of ‘cv::Exception‘问题的解决方案

还是这样。。。我这暴脾气,瞬间就发飙了,

使用“Opencv“时遇到terminate called after throwing an instance of ‘cv::Exception‘问题的解决方案
我非要解决它,然后又找了一种解决方案.
这个上面讲去掉 这个 Mat img1 = imread(“1.jpg”,0); 括号里面的0
变成这样 Mat img1 = imread(“1.jpg”); //imread括号中不加0
我试了试,结果

使用“Opencv“时遇到terminate called after throwing an instance of ‘cv::Exception‘问题的解决方案
还是这样,我就又试这种方案.
结果还是没解决。当我看到这种方案.时,开始怀疑,是不是代码的问题,我觉的高博的代码应该不会出现这种问题啊。
使用“Opencv“时遇到terminate called after throwing an instance of ‘cv::Exception‘问题的解决方案

如果以上提供的记住方案你们就已经解决了,那下边就不用看了。
如果以上还没解决那么有可能你和我一样,有点轴。。。
最后呢,我就把要加载的两张图片left.png,right.png复制到可执行文件的目录下,
也就是这里,文件放的地方不对,不在应该的路径下

// 文件路径
string left_file = "./left.png";
string right_file = "./right.png";
  // 读取图像
 cv::Mat left = cv::imread(left_file,0);
 cv::Mat right = cv::imread(right_file,0);

然后 运行 结果
使用“Opencv“时遇到terminate called after throwing an instance of ‘cv::Exception‘问题的解决方案

成功了。。。奇妙,我以为,图片位置放置的不对它会报错提醒我:当前文件夹下没有那两个文件。居然是这个原因,成功给自己整笑了。不管怎样,算是解决了,以后吸取教训。。。