Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重心x方向计算错误(openCV Python)_Python_Opencv_Center - Fatal编程技术网

重心x方向计算错误(openCV Python)

重心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

我尝试用openCV和Python计算二值图像中物体的重心。我使用cv2.findContours和cv2.moments,但我总是得到错误的x方向。它总是有几个像素的正偏移量,我不明白为什么。我想我做的和openCV文档中的一样

这里有一个例子。绿色是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)

如果使用:M=cv2.moments(cnt2)而不是cnt1会发生什么?TypeError:array不是numpy数组,scalarIt也不能与cnt2一起使用[0]。谢谢你,很抱歉问了这个愚蠢的问题。我是Python的初学者。