如何使用opencv检测到的每种形状仅获得一个countour

时间:2019-07-14 10:16:13

标签: python-3.x opencv image-processing

I am trying to extract the rectangles in an image after extraction, getting two contours for each shape that is detected i.e, lower bound and upper bound  of each shape. But i need only one countour for shape

I tried to convert the image to binary and applied dilation to it and extracted each contour. Here iam getting two countours for each shape but i need only one contour for each shape, how can i get only one countour for one shape.

img =  cv2.imread("target2.jpg",0) 
img = cv2.resize(img,(1280,720)) # resizing image as it is large in size
_,thr1 = cv2.threshold(img,220,255,cv2.THRESH_BINARY_INV)  # convering to binary
kernal = np.ones((2,2),np.uint8)  #creating small size kernel
dilation = cv2.dilate(thr1, kernal , iterations=1)  # dialating the small pixels in image
contours, hireracy = cv2.findContours(dilation,cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)  # finding the countours in image
count =0  #conting the rectangles
for i,contour in enumerate(contours):
    approx = cv2.approxPolyDP(contour,0.01*cv2.arcLength(contour,True),True);   #using approxpoly to define the arc thickness
    if len(approx) ==4: # is the poly contains four vertices then its an rectangle
        X,Y,W,H = cv2.boundingRect(approx)      
        aspectratio = float(W)/H
        if aspectratio >=1.5 :
            count = count +1
            cv2.drawContours(img, [approx], 0, (0,255,0),5)
            x = approx.ravel()[0]
            y = approx.ravel()[1]
            cv2.putText(img, "rectangle"+str(i),(x,y),cv2.FONT_HERSHEY_COMPLEX, 0.5, (0,255,0))
print(count)
cv2.imshow("image",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

I am trying to extract the rectangles in an image after extraction, getting two contours for each shape that is detected i.e, lower bound and upper bound  of each shape

I tried to convert the image to binary and applied dilation to it and extracted each contour. Here iam getting two countours for each shape but i need only one contour for each shape, how can i get only one countour for one shape.

我正在尝试在提取后在图像中提取矩形,为检测到的每种形状获取两个轮廓,即每种形状的下限和上限

I tried to convert the image to binary and applied dilation to it and extracted each contour. Here iam getting two countours for each shape but i need only one contour for each shape, how can i get only one countour for one shape.

0 个答案:

没有答案