为了账号安全,请及时绑定邮箱和手机立即绑定

尽管图像是二进制 opencv,但 findContours() 不起作用

尽管图像是二进制 opencv,但 findContours() 不起作用

人到中年有点甜 2022-10-18 15:08:43
所以我试图获取图像的轮廓,但它似乎是错误的数据类型,我收到了这个错误:cv2.error:OpenCV(4.2.0)/Users/travis/build/skvark/opencv-python/opencv/modules/imgproc/src/contours.cpp:197:错误:(-210:不支持的格式或格式组合) [开始]FindContours 在 mode != CV_RETR_FLOODFILL 时仅支持 CV_8UC1 图像,否则仅在函数 'cvStartFindContours_Impl' 中支持 CV_32SC1 图像我读到这可能是图像不是二进制的问题,但是在我的情况下,我已经通过阈值转换了图像: im = cv2.imread("picture.jpg") cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) (thresh, im_t) = cv2.threshold(im, 160, 255, cv2.THRESH_BINARY) im_tb = cv2.convertScaleAbs(im_t)  #this does not seem to help either (contours, hierarchy) = cv2.findContours(im_tb,cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)谢谢您的帮助
查看完整描述

1 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

代替

   cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)

你应该使用

   im = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)

否则,转换结果将被丢弃,您仍然拥有 3 通道 RGB 图像。


查看完整回答
反对 回复 2022-10-18
  • 1 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号