我今天用 simplecv python 接口包装了 opencv。在浏览了官方的SimpleCV Cookbook之后,我能够成功地加载、保存和操作图像。因此,我知道库正在正确加载。
但是,在使用相机、Kinect 或虚拟相机标题下,我无法成功运行某些命令。特别是,mycam = Camera()
工作,但img = mycam.getImage()
产生了以下错误:
In [35]: img = mycam.getImage().save()
OpenCV Error: Bad argument (Array should be CvMat or IplImage) in cvGetSize, file /home/jordan/OpenCV-2.2.0/modules/core/src/array.cpp, line 1237
---------------------------------------------------------------------------
error Traceback (most recent call last)
/home/simplecv/<ipython console> in <module>()
/usr/local/lib/python2.7/dist-packages/SimpleCV-1.1-py2.7.egg/SimpleCV/Camera.pyc in getImage(self)
332
333 frame = cv.RetrieveFrame(self.capture)
--> 334 newimg = cv.CreateImage(cv.GetSize(frame), cv.IPL_DEPTH_8U, 3)
335 cv.Copy(frame, newimg)
336 return Image(newimg, self)
error: Array should be CvMat or IplImage
我在 HP TX2500 平板电脑上运行 Ubuntu Natty。它有一个内置的网络摄像头(CyberLink Youcam?)以前有人见过这个错误吗?我今天一直在网上寻找解决方案,但似乎没有任何效果。
更新 1 :我使用在一个单独的 Stack Overflow 问题中找到的代码测试了 cv.QueryFrame(capture)并且它有效;所以我几乎把它归结为网络摄像头问题。
更新 2:事实上,我在一台甚至没有网络摄像头的机器上遇到了完全相同的错误!看来TX2500不兼容...