从白色ROI获取质心 - Opencv(Python)

时间:2015-02-19 13:23:43

标签: python opencv

我想获得几个白色区域的质心,我正在尝试使用findContours(),然后获取时刻并计算质心。但是,我不确定它在轮廓中存储的内容以及如何做好...

这是代码

# load the image
image = cv2.imread('mask.png',0) # Black and white image

 contours, _, _ = cv2.findContours(image,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

# Why only a row??
cnt = contours[1]

M = cv2.moments(cnt)
print M

cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])

print contours 

任何帮助都会很感激! :)

2 个答案:

答案 0 :(得分:0)

cv2.findContours()检测轮廓,其中每个轮廓都存储为点矢量 - 在您的情况下,它是图像中所有轮廓的Python列表。每个单独的轮廓是对象边界点的(x,y)坐标的Numpy数组。

答案 1 :(得分:0)

我已经拍摄了名为 rmask 的二进制图像,然后我在python中完成了以下操作:

cv2.imshow('Red mask',rmask)
image, contours, hier = cv2.findContours(rmask.copy(), 1, 2)
# image stores the image of contours, contours store an array containing all the boundary points of an object
moments = [cv2.moments(cnt) for cnt in contours]
centroids = [(int(M['m10'] / M['m00']), int(M['m01'] / M['m00'])) for M in moments]
for c in centroids:
    cv2.circle(rmask, c, 5, (0, 0, 0))
cv2.imshow('img', rmask)

以上代码对我有用。