从python27迁移到Python37后,cv2.0不再工作
我制作了一个python脚本,它使用opencv和cv2.moments命令来获取轮廓中心和其他信息。在我迁移到Python3并重新安装opencv之前,它工作得很好。现在我得到以下错误:从python27迁移到Python37后,cv2.0不再工作,python,python-3.x,python-2.7,opencv,opencv-contour,Python,Python 3.x,Python 2.7,Opencv,Opencv Contour,我制作了一个python脚本,它使用opencv和cv2.moments命令来获取轮廓中心和其他信息。在我迁移到Python3并重新安装opencv之前,它工作得很好。现在我得到以下错误: Traceback (most recent call last): File "opencvQuestion.py", line 91, in <module> main() File "opencvQuestion.py", line 72, in main r
Traceback (most recent call last):
File "opencvQuestion.py", line 91, in <module>
main()
File "opencvQuestion.py", line 72, in main
referentialDetector()
File "opencvQuestion.py", line 37, in referentialDetector
M1 =cv2.moments(k)
TypeError: Expected Ptr<cv::UMat> for argument '%s'
谢谢你的帮助 您是否碰巧也切换了OpenCV版本?你以前用过哪个版本,现在用的是哪个?另外,我想知道,在cnts1和M1=cv2中的k中,如何
cnts1=cv2。在过去,矩(k)
是如何工作的findContours
至少有两个返回值(对于某些版本,甚至三个),即使对于OpenCV 2.4.x也是如此。同样,你能提供准确的版本信息吗?嗨@HansHirse,谢谢你的回答。是的,我必须重新安装opencv,所以我使用V4。目前为2.0。在某一点上,我得到了image,cnts,hierarchy=cv2.findContours(…),但代码用于任何方式
def referentialDetector():
# Create mask to detect referential:
global cnts1, blackAndWhiteImage,pts1,pts2, warpMatrix, shape, passFound
cnts1 = cv2.findContours(np.array(blackAndWhiteImage), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
# loop over the contours found in blackAndWhiteImage:
if len(cnts1)>0:
cX1 = []
cY1 = []
for k in cnts1:
#k = cv2.UMat(k,ranges=0)
M1 =cv2.moments(k)
if M1["m00"]!=0:
print("detector4")
cX1.append(int((M1["m10"] / M1["m00"])))
cY1.append(int((M1["m01"] / M1["m00"])))
print(cX1)