如何使用python和Opencv计算图像中的点数?

时间:2018-01-08 16:51:00

标签: python opencv

我想计算图像中的点数。 图像看起来像 Dots Image

我提到了这个SOF链接count colored dots in image 但这是彩色链接,所以这里的任何人都可以指导我如何处理这个并计算白色背后的黑点。

2 个答案:

答案 0 :(得分:4)

  1. thredhold使用THRESH_BINARY_INV标记,更改为black-background-white-foreground。
  2. findContours,按区域(按contourArea计算)
  3. 过滤轮廓
  4. 你懂了
  5. import cv2
    gray = cv2.imread("dots.jpg", 0)
    
    ## threshold
    th, threshed = cv2.threshold(gray, 100, 255,cv2.THRESH_BINARY_INV|cv2.THRESH_OTSU)
    
    ## findcontours
    cnts = cv2.findContours(threshed, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[-2]
    
    
    ## filter by area
    s1= 3
    s2 = 20
    xcnts = []
    for cnt in cnts:
        if s1<cv2.contourArea(cnt) <s2:
            xcnts.append(cnt)
    
    print("Dots number: {}".format(len(xcnts)))
    #Dots number: 23
    

    enter image description here

答案 1 :(得分:-1)

您指向的答案将彩色图像转换为灰度,因此您应该将HoughCircles()应用于图像并找出结果数组的长度。