Python opencv findContours报错

本文分享了在使用OpenCV进行轮廓检测时遇到的问题及解决方法。作者在处理神经网络输出的掩膜图像时,遇到了格式不匹配和数据类型错误。通过将掩膜转换为图片再读取的方式,成功应用findContours函数,实现轮廓检测。

在刚开始使用opencv python 的时候,出现了不少的问题。现在来总结一下遇到的问题以及其解决方法

一开始,出现了这个问题:

FindContours supports only CV_8UC1 images

对于这个问题,应该就是图片的格式的问题,但是我是打算使用的是从神经网络里面输出的掩膜,而且我也不太熟悉,也不知道该怎么弄,发现网上的人并没有很多解决这个问题的方法,所以我就尝试去使用cvtcolor来转化一下看看行不行

但是当我使用了cvtColor的时候,我又发现问题了:

only size-1 arrays can be converted to Python scalars

对于这个问题就应该是数据的格式的问题了,但是我要处理的是我的网络的输出结果啊??网上面也没有太多解决这个问题的方法

最后我就用了一个非常笨的方法来解决这个问题了×(有时间在看看怎么样解决吧,公司项目不能拖太久==)

首先,我把这个掩膜按照图片输出

cv2.imwrite(os.path.join(BIT_OUT,name),mask.astype(np.uint8))

按照图片输出了以后,就可以按照网上的普遍的方法来处理了

img = cv2.imread(os.path.join(BIT_OUT, each_small))
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

        image, contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

我必须承认。这是一个很笨的方法

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值