在刚开始使用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)
我必须承认。这是一个很笨的方法