在Imag中使用Python OpenCV矩函数

2024-10-05 10:16:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在灰度图像上使用Pythonopencv函数Moments(),但是我收到了以下TypeError

>>> img = cv.LoadImage('example_image.jpg', cv.CV_LOAD_IMAGE_GRAYSCALE)
>>> moments = cv.Moments(img)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Argument '' must be CvSeq, CvArr, or a sequence of numbers
>>> 

我确信这种用法是正确的,正如在opencvdocshere中所示,GetHuMoments()使用了Moments()的结果。在

我相信我已经正确地安装了opencvnumpy,因为我已经成功地将它们用于许多其他事情,而且我在OS X 10.6和Red Hat 6上都遇到过这种情况。在

相同的问题是posed in the opencv user group,但我不想按照回复的指示先将图像转换为轮廓。在


Tags: 函数in图像imageimgexampleopencvcv
2条回答

您使用哪个python和opencv版本?我在python2.6.6和opencv2.1.0上得到了工作结果

~/Desktop$ ./opencv-test.py 

> `enter code here`/home/tyndyll/Desktop/opencv-test.py(8)<module>()
-> img = cv.LoadImage( 'iron-maiden-live-after-death-iron-maiden_1920x1200_79442.jpg', cv.CV_LOAD_IMAGE_GRAYSCALE )
(Pdb) n
> /home/tyndyll/Desktop/opencv-test.py(9)<module>()
-> moments = cv.Moments( img )
(Pdb) p img
<iplimage(nChannels=1 width=1920 height=1200 widthStep=1920 )>
(Pdb) n
> /home/tyndyll/Desktop/opencv-test.py(10)<module>()
-> print "Done"
(Pdb) p moments
<cv.cvmoments object at 0x7f31fb5437b0>
(Pdb) c
Done

看来您需要强制从IplImage转换到cvMat

以前有个问题“用Python OpenCV将图像捕获为数组”

Capture Image as Array with Python OpenCV

例如对我来说

>>> mm=cv.Moments(img)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: Argument '' must be CvSeq, CvArr, or a sequence of numbers
>>> mat=cv.GetMat(img)
>>> mm=cv.Moments(mat)
>>> mm.m00
181428.0

相关问题 更多 >

    热门问题