重心x方向计算错误(openCV Python)
我尝试用openCV和Python计算二值图像中物体的重心。我使用cv2.findContours和cv2.moments,但我总是得到错误的x方向。它总是有几个像素的正偏移量,我不明白为什么。我想我做的和openCV文档中的一样 这里有一个例子。绿色是cv2.findContours的轮廓。红色表示计算出的质心 我的代码是:重心x方向计算错误(openCV Python),python,opencv,center,Python,Opencv,Center,我尝试用openCV和Python计算二值图像中物体的重心。我使用cv2.findContours和cv2.moments,但我总是得到错误的x方向。它总是有几个像素的正偏移量,我不明白为什么。我想我做的和openCV文档中的一样 这里有一个例子。绿色是cv2.findContours的轮廓。红色表示计算出的质心 我的代码是: import cv2 import numpy as np img = cv2.imread('C:/Users/Arno/Documents/Masterarbei
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)
如果使用:M=cv2.moments(cnt2)而不是cnt1会发生什么?TypeError:array不是numpy数组,scalarIt也不能与cnt2一起使用[0]。谢谢你,很抱歉问了这个愚蠢的问题。我是Python的初学者。