gpt4 book ai didi

python-2.7 - 如何从二进制图像中删除拉长的结构(轮廓)

转载 作者:行者123 更新时间:2023-12-02 17:49:43 25 4
gpt4 key购买 nike

我试图从我的二进制图像中删除拉长的轮廓,但是我仍然得到了大多数轮廓。我尝试使用但考虑到紧凑性和偏心率因素将其删除,但在我的情况下不起作用。

im=cv2.imread('thresh.png')
gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
cv2.imshow('thres',gray)
gray2 = gray.copy()
mask = np.zeros(gray.shape,np.uint8)
contours, hier = cv2.findContours(gray2,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
area=cv2.contourArea(cnt)
if area>=5:
ellipse = cv2.fitEllipse(cnt)
# center, axis_length and orientation of ellipse
(center,axes,orientation) = ellipse

# length of MAJOR and minor axis
majoraxis_length = max(axes)
minoraxis_length = min(axes)
eccentricity = np.sqrt(1-(minoraxis_length/majoraxis_length)**2)
#############compactness################
area=cv2.contourArea(cnt)
equi_diameter = np.sqrt(4*area/np.pi)
compactness=equi_diameter/majoraxis_length

########################################
if(eccentricity<=0.6 or eccentricity >1) or (compactness <0.8):
cv2.drawContours(gray2,[cnt],0,(0,0,0),1)
cv2.drawContours(mask,[cnt],0,255,-1)

cv2.imshow('final',mask)

谁能建议我一些去除这些细长轮廓的方法。

最佳答案

我能想到的一种选择是计算每个对象的面积和最大长度,而不是为面积/长度设置阈值。

关于python-2.7 - 如何从二进制图像中删除拉长的结构(轮廓),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25587902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com