0
私は以下のような画像をいくつか持っています: 画像はほとんど白い背景にあります。Opencvは最も関心のある領域を抽出します
opencv接続コンポーネントを使用して2つの衣服を検出しようとしました。 最大の2つの接続コンポーネントを使用しようとしましたが、残念ながら、私は失敗しています。
私はこれが可能だと信じていますが、私はopencvの初心者なので、次の画像で複数の衣服を検出するために何ができるのか、
すべてのヘルプは、私はPythonでしようとしたことを
コードを高く評価されています
#Read the image and conver to grayscale
img = cv2.imread('t.jpg' , 0)
#Applt the median filter on the image
#med = cv2.medianBlur(image,5) # 5 is a fairly small kernel size
#Apply an edge detection filter
laplacian = cv2.Laplacian(img,cv2.CV_64F)
laplacian = laplacian.astype(np.uint8)
ret,thresh1 = cv2.threshold(laplacian,127,255,cv2.THRESH_BINARY)
src = thresh1
src = np.array(src, np.uint8)
ret, thresh = cv2.threshold(src,10,255,cv2.THRESH_BINARY)
# You need to choose 4 or 8 for connectivity type
connectivity =8
# Perform the operation
output = cv2.connectedComponentsWithStats(thresh, connectivity, cv2.CV_32S)
# Get the results
# The first cell is the number of labels
num_labels = output[0]
# The second cell is the label matrix
labels = output[1]
# The third cell is the stat matrix
stats = output[2]
# The fourth cell is the centroid matrix
centroids = output[3]
src = cv2.cvtColor(src,cv2.COLOR_GRAY2RGB)
for stat in stats:
x , y ,w , h ,a = stat
cv2.rectangle(src,(x,y),(x+w,y+h),(0,0,255),2)
# write original image with added contours to disk
#cv2.imwrite('contoured.jpg', image)
cv2.imshow("Image", src)
#cv2.waitKey(0)
cv2.waitKey(0)
cv2.destroyAllWindows()
上記のコード
のための私の出力NB:その罰金をしても私は与えられたイメージの中で最大のオブジェクトを抽出することができます。