OpenCV 如何从噪声和误报中清除轮廓
OpenCV how to clear contour from noise and false positives
我在 Python.
中找到了具有标准函数 cv2.findContours 的图像轮廓
但是如你所见,中间有一个点,我无法在不破坏等高线的情况下过滤它。
如何删除这样的误报集群?
轮廓外的不重要
gray = cv2.cvtColor(self.img, cv2.COLOR_RGB2GRAY)
_, mask = cv2.threshold(gray, thresh=152, maxval=162, type=cv2.THRESH_BINARY)
self.mask = cv2.bitwise_and(gray, mask)
self.contours, hierarchy = cv2.findContours(self.mask, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
避免误报的一个好方法是考虑面积最大的轮廓:
import imutils #to use sorting functionality
#To install imutils run: pip install imutils for python 2.x
#Run: pip3 install imutils for python 3.x
cnts = imutils.grab_contours(cnts) #where cnts is the variable in which contours are stored, replace it with your variable name
cnts = sorted(cnts, key = cv2.contourArea, reverse = True)[:10] #sorts contours according to their area from largest to smallest.
largestCont = cnts[0] #store the largest contour
这将删除小点,同时只给出最大的轮廓
我在 Python.
中找到了具有标准函数 cv2.findContours 的图像轮廓但是如你所见,中间有一个点,我无法在不破坏等高线的情况下过滤它。
如何删除这样的误报集群? 轮廓外的不重要
gray = cv2.cvtColor(self.img, cv2.COLOR_RGB2GRAY)
_, mask = cv2.threshold(gray, thresh=152, maxval=162, type=cv2.THRESH_BINARY)
self.mask = cv2.bitwise_and(gray, mask)
self.contours, hierarchy = cv2.findContours(self.mask, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
避免误报的一个好方法是考虑面积最大的轮廓:
import imutils #to use sorting functionality
#To install imutils run: pip install imutils for python 2.x
#Run: pip3 install imutils for python 3.x
cnts = imutils.grab_contours(cnts) #where cnts is the variable in which contours are stored, replace it with your variable name
cnts = sorted(cnts, key = cv2.contourArea, reverse = True)[:10] #sorts contours according to their area from largest to smallest.
largestCont = cnts[0] #store the largest contour
这将删除小点,同时只给出最大的轮廓