我想获得几个白色区域的质心,我正在尝试使用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
任何帮助都会很感激! :)
答案 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)
以上代码对我有用。