编程语言
首页 > 编程语言> > python – opencv getImage()错误

python – opencv getImage()错误

作者:互联网

我今天用simplecv python接口包装了opencv.通过官方SimpleCV Cookbook后,我成功地获得了Load, SaveManipulate图像.因此,我知道库正在正确加载.

但是,在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