【python-opencv】cv2.findContours()寻找轮廓时报错小汇总

函数:cv2.findContours(),cv2.drawContours()


轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同
的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。


增加识别成功率的几个方法:
• 为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理
或者 Canny 边界检测。

• 查找轮廓的函数会修改原始图像。如果你在找到轮廓之后还想使用原始图
像的话,你应该将原始图像存储到其他变量中。也就是说将原图进行复制
例如:
contours, hierarchy = cv2.findContours(image,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)


加入传入的图片是image,而image是读入opencv的原图,此时大多数传入image.copy();如:
contours, hierarchy = cv2.findContours(image.copy(),cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
或者:
image = image.copy()
contours, hierarchy =
cv2.findContours(image,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)


如果以上操作,程序还是报错的话,就要注意传入图片的格式
正确传入格式为:uint8****这点很重要,真的很重要!!!
不要问我是怎么知道的,因为我也遇到过这个问题!!!
查看图片格式为:print(image.dtype)
如果不是uint8,将其转换过来,传入进去


如果还报错
如果还报错
如果还报错
可能是版本问题
contours, hierarchy =
cv2.findContours(image,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
有的版本会返回三个参数,有的版本返回2个参数,大家注意一下

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值