我尝试使用openCV和Python计算二进制图像中对象的质心。我使用cv2.findContours和cv2.moments但我总是得到一个错误的x方向。它始终是几个像素的正偏移,我不明白为什么。我想我的确就像在openCV doc中那样。
这是一个例子。绿色是cv2.findContours找到的轮廓。红色计算的质心。
我的代码是:
import cv2
import numpy as np
img = cv2.imread('C:/Users/Arno/Documents/Masterarbeit/Matlab/rect2.png', 0)
cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
contours = cv2.findContours(img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cnt1 = contours[0]
cnt2 = contours[1]
cv2.drawContours(cimg, cnt2, -1, (0, 255, 0), 2)
M = cv2.moments(cnt1)
cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])
cv2.circle(cimg, (cx, cy), 1, (0, 0, 255), 2)
cv2.imshow('center of mass', cimg)