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

所以我试图获取图像的轮廓,但它似乎是错误的数据类型,我收到了这个错误:


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)

谢谢您的帮助


人到中年有点甜
浏览 101回答 1
1回答

慕少森

代替   cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)你应该使用   im = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)否则,转换结果将被丢弃,您仍然拥有 3 通道 RGB 图像。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python