OpenCV实战中:blender->feed(img_warped_s, mask_warped, corners[img_idx]);这里有异常的处理方法

刚才在跑OpenCV的程序的时候,显示的是:blender->feed(img_warped_s, mask_warped, corners[img_idx]);这里有异常

在这里插入图片描述

报错如上图,那我能怎么办?首先看一下blender下面的feed()函数中的各个参数都是干嘛的。我们发现:blender->feed(img_warped_s, mask_warped, corners[img_idx]);中的各个参数:
img_warped_s:是源图
mask_warped是源图的掩膜
corners[img_idx]表示的源图的左上角的坐标,其中Img_idx表示的是图片的个数。

知道了各个参数的功能,下一步就是想看看这些值是正常的吗?

果然,一看
在这里插入图片描述
在这里插入图片描述
corner图片的左上角竟然出现负值,说明问题可能出现在这里
然后看img_idx大小为1,还有一次是显示为0,也就是说这个图片数量可能是不正常的。

所以,追本溯源,看看img_idx的上限是谁。

在这里插入图片描述
我们发现 Img_idx是for循环的中的变量,它的上限是num_images,也就是图片的数量。哦,到这里,我们才真正地可以说问题大概是出在了图片数量上。

在这里插入图片描述
调试的发现果真如此,发现num_images为负数,这当然不合常理。

在这里插入图片描述

然后呢?什么问题会导致图片数量不对呢?有如下几种可能:图片路径不对,resize()之后图片大小尺寸不匹配(为什么会想到resize(),因为之前跑代码的时候遇到过)。
到这里之后,一回想,果然是resize()之后图片大小上下不匹配,总共用了两次resize(),第一次用的是原尺寸,第二次用的是原尺寸的1/2,导致上下不一致。改成一致之后,问题解决!

你看,出现异常的是blender->feed(img_warped_s, mask_warped, corners[img_idx])
结果调试出来的错误在resize().

[总结]
每次跑程序的时候最好做记录,你要知道你最后跑的时候用的参数是什么,防止在没有git 的情况下,忘掉最后设置的参数。与此同时,也说明写注释的重要性。

发布了113 篇原创文章 · 获赞 69 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/shizheng_Li/article/details/103014840