如何在opencv中打开或关闭轮廓?

时间:2013-02-28 12:05:28

标签: python opencv contour

我怎么知道在'opencv'中打开或关闭从'查找轮廓'功能获取的轮廓?

更新

我尝试将isContourConvex应用于此图片:https://docs.google.com/file/d/0ByS6Z5WRz-h2RXdzVGtXUTlPSGc/edit?usp=sharing

我提取最大面积的轮廓 并返回false。 我可能会改变轮廓提取,扩张吗?

nomeimg = 'Riscalate2/JPEG/e (5).jpg'

img = cv2.imread(nomeimg)

gray = cv2.imread(nomeimg,0)#convert grayscale adn binarize

element = cv2.getStructuringElement(cv2.MORPH_CROSS,(6,6)) 
graydilate = cv2.erode(gray, element) #imgbnbin

cv2.imshow('image',graydilate)
cv2.waitKey(0)

ret,thresh = cv2.threshold(graydilate,127,255,cv2.THRESH_BINARY_INV)   # binarize

imgbnbin = thresh
cv2.imshow('bn',thresh)
cv2.waitKey()

#element = cv2.getStructuringElement(cv2.MORPH_CROSS,(2,2))
#element = np.ones((11,11),'uint8')


contours, hierarchy = cv2.findContours(imgbnbin, cv2.RETR_TREE ,cv2.CHAIN_APPROX_SIMPLE)
print(len(contours))


# Take only biggest contour basing on area
Areacontours = list()
calcarea = 0.0
unicocnt = 0.0
for i in range (0, len(contours)):
    area = cv2.contourArea(contours[i])
    #print("area")
    #print(area)
    if (area > 90 ):  #con 90 trova i segni e togli puntini
        if (calcarea<area):
            calcarea = area
            unicocnt = contours[i]


convex = cv2.isContourConvex(unicocnt)
print("convex")
print(convex)

1 个答案:

答案 0 :(得分:5)

您正在寻找条款concave(如C)与convex(如O)轮廓。

猜猜看,有一种检查凸性的方法:

cv2.isContourConvex(contour)