检测图像中的矩形

时间:2015-11-07 20:06:09

标签: image image-processing detection contour rectangles

我想问一下有人可以帮我查看图像中的矩形检测。

我尝试过轮廓检测,但效果还不够。

1) original, 2) canny 3) contours

我感谢任何想法。

我试过这个:

编辑1

# loading image
im = cv2.imread('b.jpeg',cv2.IMREAD_GRAYSCALE)

# equalization
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
im = clahe.apply(im)

# bluring image
im = cv2.GaussianBlur(im,(5,5),0)

# edge detection
edges = cv2.Canny(im,100,200)
cv2.imshow('Canny',edges)
cv2.moveWindow('Canny',0,0)
cv2.waitKey(0)
cv2.destroyAllWindows()

# contour extraction
ret,thresh = cv2.threshold(edges,50,255,0)
contours, hierarchy =        cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(im, contours, -1, (0,255,0), 3)
cv2.imshow('Contour',im)
cv2.moveWindow('Contour',0,0)
cv2.waitKey(0)
cv2.destroyAllWindows()

cntrRect = []
for i in contours:
        approx = cv2.approxPolyDP(i,0.1*cv2.arcLength(i,True),True)
        x,y,w,h = cv2.boundingRect(approx)
        cv2.rectangle(im,(x,y),(x+w,y+h),(0,255,0),2)
        #peri = cv2.arcLength(i,True)
        epsilon = 0.1*cv2.arcLength(i,True)
        #0.02*peri
        approx = cv2.approxPolyDP(i,epsilon,True)
        if len(approx) == 4:
                cntrRect.append(approx)

cv2.imshow('Contour2',im)
cv2.moveWindow('Contour2',0,0)
cv2.waitKey(0)
cv2.destroyAllWindows()


cv2.drawContours(im, cntrRect, -1, (255,0,0), 3)
cv2.imshow('Contour3',im)
cv2.moveWindow('Contour3',0,0)
cv2.waitKey(0)
cv2.destroyAllWindows()

0 个答案:

没有答案