如何使用opencv消除小轮廓区域
How to eliminate small contour areas using opencv
我曾尝试使用 KNearestNeighbors
作为插值方法在 python 中创建等高线图,但出现错误。但是,图形返回时带有多个小轮廓区域,我想消除这些区域:
我尝试用OpenCV找出所有封闭的等高线并设置一个边界值作为最大面积,然后消除所有小于边界值的区域。
然而,我使用findContours
方法似乎失败了,因为它只找到故障周围的轮廓。所有其他轮廓都无法呈现。结果图和我的代码如下:
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,非常感谢您的帮助。
在找到轮廓之前尝试使用 canny,或对图像设置阈值,这将使查找轮廓变得更容易和更好。
我曾尝试使用 KNearestNeighbors
作为插值方法在 python 中创建等高线图,但出现错误。但是,图形返回时带有多个小轮廓区域,我想消除这些区域:
我尝试用OpenCV找出所有封闭的等高线并设置一个边界值作为最大面积,然后消除所有小于边界值的区域。
然而,我使用findContours
方法似乎失败了,因为它只找到故障周围的轮廓。所有其他轮廓都无法呈现。结果图和我的代码如下:
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,非常感谢您的帮助。
在找到轮廓之前尝试使用 canny,或对图像设置阈值,这将使查找轮廓变得更容易和更好。