使用 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
值 cX
和 cY
具有轮廓的平均位置。
我有一张二值图像,我需要找到黑色区域的 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
值 cX
和 cY
具有轮廓的平均位置。