2016-08-08 4 views
1

私は、この画像の各コンポーネントを選択します:実際にOpenCVのPythonのconnectedComponents選択コンポーネント

enter image description here

、一人ひとりの三角形、そのラベルによります。私はどのように把握していない。 私はこのコードを持っている:

#!/usr/bin/python 
import cv2 
import numpy as np 
img = cv2.imread('invMehs.png', -1) 
imGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
ret, imBw = cv2.threshold(imGray, 250, 255, cv2.THRESH_BINARY) 

invBwMesh = cv2.bitwise_not(imBw) 
Mask = np.ones(imBw.shape, dtype="uint8") * 255 

connectivity = 4 
output = cv2.connectedComponentsWithStats(imBw, connectivity, cv2.CV_32S) 
num_labels = output[0] 
labels = output[1] 
stats = output[2] 
centroids = output[3] 
labels = labels + 1 

b = (labels == 1) 
cv2.imwrite('tst.jpg',labels[b]) 

をしかし、画像が黒completyです:S はどうもありがとうございました。

答えて

0

保存する画像(ラベル[b])には、細い線(グレーレベル1)しか含まれていません。 JPEG形式を使用して画像を保存するとき、圧縮アルゴリズムはそれらを滑らかにしますが、背景に1つのグレーレベルしか持たないので、それらは消去されます。だからこそ黒い画像が得られるのです

PNG形式で保存しても画像ラベルは変更しないでください。

各連結成分(背景用0)のすべてのラベルに保つために、書くためのコードは次のようになります

cv2.imwrite('labels.png',output[1]) 
関連する問題