【发布时间】:2017-11-14 09:24:14
【问题描述】:
我是图像处理方面的绝对初学者。我想检测各种不同边缘之间的嵌套形状。从我的程序中,我已经通过层次关系成功检测到预期的轮廓。但是当我要检测形状时出现了我的问题.对于轮廓近似,我在我想要的轮廓上使用cv2.approxpolyDP()方法/函数,使用它的索引号。但每次它都会产生相同的输出,即“1”。我不知道我在哪里弄错了。请看一下并给我一些建议。代码在下面给出,要检测的图像也在这些链接中给出。请帮帮我...
import cv2
import numpy as np
maxx=0
original_color=cv2.imread("tri.jpg",1)
original=cv2.cvtColor(original_color,cv2.COLOR_BGR2GRAY)
#cv2.imshow("original",original)
blur=cv2.GaussianBlur(original,(5,5),0)
ret,thresh=cv2.threshold(blur,50,255,cv2.THRESH_BINARY)
edges = cv2.Canny(thresh,100,200)
image,contours,hierarchy=cv2.findContours(edges.copy(),cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
print len(contours)
##for c in range(0,len(hierarchy)) :
## a=zip(hierarchy[c],contours[c])
for i in range(0,len(hierarchy[0])):
if hierarchy[0][i][2]>=maxx :
if(hierarchy[0][i][3]==(hierarchy[0][i][2]-2)):
maxx=hierarchy[0][i][2]
index=i
cnt=contours[index]
for c in cnt :
peri=cv2.arcLength(c,True)
approx=cv2.approxPolyDP(c,0.04*peri,True)
print hierarchy
print maxx
print len(approx)
cv2.drawContours(original_color,contours,index,(0,255,0),3)
cv2.imshow("Show",original_color)
cv2.waitKey()
cv2.destroyAllWindows()
检测前
成功检测到
【问题讨论】:
标签: python opencv approximation opencv-contour