如何使用opencv消除小轮廓区域

2024-04-28 02:53:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我曾尝试使用KNearestNeighbors作为插值方法在python中创建一个带有断层的等高线图。但是,该图显示了多个小轮廓区域,我想消除这些区域:

contour map generated

我尝试使用OpenCV查找所有封闭的轮廓线,并将边界值设置为最大面积,然后消除所有小于边界值的面积

然而,我似乎无法使用findContours方法,因为它只找到断层周围的轮廓。所有其他轮廓都没有出现。结果图和我的代码如下所示:

enter image description here

img = cv2.imread('contor_line.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  
ret, binary = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)  
contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)  
cv2.drawContours(gray,contours,-1,(0,0,255),1)  
cv2.imshow("gray", gray)  
cv2.waitKey(0)

这是我第一次使用OpenCV,谢谢你的帮助


Tags: 方法区域imgcv2opencv轮廓插值binary