加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – opencv getImage()错误

发布时间:2020-12-20 13:24:16 所属栏目:Python 来源:网络整理
导读:我今天用simplecv python接口包装了opencv.通过官方 SimpleCV Cookbook后,我成功地获得了 Load,Save和 Manipulate图像.因此,我知道库正在正确加载. 但是,在Using a Camera,Kinect,or Virtual Camera标题下,我没有成功运行一些命令.特别是,mycam = Camera()工
我今天用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),3)
    cv.Copy(frame,newimg)
    return Image(newimg,self)

然后运行你的程序,它将暂停为pdb.set_trace(),在这里你可以检查框架的类型,并试图弄清楚如何获得框架的大小.

或者您可以在代码中执行捕获,并检查框架对象:

mycam = Camera()
cv.GrabFrame(mycam.capture)
frame = cv.RetrieveFrame(mycam.capture)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读