1. 程式人生 > >Python opencv findContours報錯

Python 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)

我必須承認。這是一個很笨的方法