使用opencv,如何不使用erosion/dilation而是使用connectedComponentsWithStas来去除点?

With opencv,How to use not erosion/dilation but connectedComponentsWithStas to remove dots?

我读过这个:

erosion/dilation 被建议,只是想知道是否可以通过使用 connectedComponectsStats 来做同样的事情?我用谷歌搜索,得到了这些:

http://www.itkeyword.com/doc/5188188731707068417/how-to-use-opencvs-connected-components-with-stats-in-python

http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_features_harris/py_features_harris.html#corner-with-subpixel-accuracy

但是从这些,我不知道如何去除点,所以请你告诉我怎么做,提前谢谢!

更新: 我真正想做的是通过去除小点从打击图像中提取人形。

使用 connectedComponentsWithStats 你可以这样做:

img = cv2.imread(directory + "canny.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
labelnum, labelimg, contours, GoCs = cv2.connectedComponentsWithStats(gray)
for label in xrange(1, labelnum):
    x,y,w,h,size = contours[label]
    if size <= 50:
         img[y:y+h, x:x+w] = 0
cv2.imwrite(directory + "cca_image.png", img)

对于您上传的图片,我得到的结果是:

这对你有用吗?我想在调用 connectedComponentsWithStats 之前 dilation/erosion 会有所帮助,但我将其留给您来决定。