python – opencv getImage()错误
作者:互联网
我今天用simplecv python接口包装了opencv.通过官方SimpleCV Cookbook后,我成功地获得了Load, Save和Manipulate图像.因此,我知道库正在正确加载.
但是,在Using a Camera, Kinect, or Virtual Camera标题下,我没有成功运行一些命令.特别是,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.它有一个内置的网络摄像头,(讯连科技Youcam?)有没有人见过这个错误?我今天一直在网上寻找解决方案,但似乎没有什么可以做的.
更新1:我使用in a separate Stack Overflow question中找到的代码测试了cv.QueryFrame(捕获)并且它工作正常;所以我几乎把它钉在网络摄像头问题上.
更新2:事实上,我在没有网络摄像头的机器上得到完全相同的错误!它看起来像TX2500不兼容……
解决方法:
由于从SimpleCV的Camera.py引发的错误,您需要调试getImage()方法.如果你可以编辑它:
def getImage(self):
if (not self.threaded):
cv.GrabFrame(self.capture)
frame = cv.RetrieveFrame(self.capture)
import pdb # <-- add this line
pdb.set_trace() # <-- add this line
newimg = cv.CreateImage(cv.GetSize(frame), cv.IPL_DEPTH_8U, 3)
cv.Copy(frame, newimg)
return Image(newimg, self)
然后运行你的程序,它将暂停为pdb.set_trace(),在这里你可以检查框架的类型,并试图弄清楚如何获得框架的大小.
或者您可以在代码中执行捕获,并检查框架对象:
mycam = Camera()
cv.GrabFrame(mycam.capture)
frame = cv.RetrieveFrame(mycam.capture)
标签:python,opencv,simplecv 来源: https://codeday.me/bug/20190710/1418773.html