使用 python 查找黑色像素的平均位置

Find mean position of blackpixels using python

我有一张二值图像,我需要找到黑色区域的 x 和 y 的平均值。这些值是针对一组二进制图像计算的,并且绘制了它们的 x 和 y 的平均值我不知道如何找到这个区域并计算它们的 x 和 y 的平均值。如有任何帮助,我们将不胜感激。

如果某些数据结构中没有注册黑色像素,只需计算黑色像素的质心:

sx = 0
sy = 0
black_cnt = 0
for y in y-range
  for x in x-range
     if black(x,y)
          sx = sx + x
          sy = sy + y
          black_cnt++

sx = sx / black_cnt
sy = sy / black_cnt

您可以使用等高线的矩获得平均位置。

为了找到平均值,您必须计算轮廓的一阶矩。

代码:

#---Read image and obtain threshold---
im = cv2.imread('1.jpg', 1)
img = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(img, 120, 255, 1)

#---Obtain contours---
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cnts = contours
cv2.drawContours(im, contours, -1, (0, 255, 0), 1)

#---Compute the center/mean of the contours---
for c in cnts:
    M = cv2.moments(c)
    cX = int(M["m10"] / M["m00"])
    cY = int(M["m01"] / M["m00"])
    print cX
    print cY 

cXcY 具有轮廓的平均位置。