OpenCV /数组应为CvMat或IplImage /释放捕获对象


问题内容

编辑: Array should be CvMat or IplImage不是特定于此问题的错误消息,那是我得到的唯一最相关的错误消息。


我正在尝试使用opencv从应用程序中制作* .exe。

我正在使用 Python 2.6openCV 2.1

我可以运行*
.exe的一部分,我有一个菜单,在这里我可以选择处理来自2种不同来源的一些图像,这些图像来自我的网络摄像头和静态图像。静态图像部分有效,但是当我选择网络摄像头时,输出为:

OpenCV错误:未知函数,文件.. \ .. \ .. \ .. \ ocv \ opencv \ src \ cxcore \ cxarray.cpp中的参数错误(数组应为CvMat或IplImage),
 1233行
追溯(最近一次通话):
  “调用回调函数”中的文件“ _ctypes / callbacks.c”,第295行
  在_wnd_proc中,文件“ game_ar \ build \ pyi.win32 \ game_ar \ outPYZ1.pyz / pyglet.window.win32”,行849
  在_event_key中的第918行,文件“ game_ar \ build \ pyi.win32 \ game_ar \ outPYZ1.pyz / pyglet.window.win32”
  在dispatch_event中的文件“ game_ar \ build \ pyi.win32 \ game_ar \ outPYZ1.pyz / pyglet.window”,行1219
  在dispatch_event中的文件“ game_ar \ build \ pyi.win32 \ game_ar \ outPYZ1.pyz / pyglet.event”,第340行
  on_key_press中的文件“”,第502行
  dostart中的文件“”,第461行
  在获取点中添加文件“”,行482
  文件“ D:\ Prog \ Python \ AugmentedR \ src \ pyar.py”,第40行,位于get_points中
    pilimage = Image.fromstring(“ RGB”,cv.GetSize(image),image.tostring())
cv.error:数组应为CvMat或IplImage
追溯(最近一次通话):
  在第616行的文件“”中 
  运行中的文件“ game_ar \ build \ pyi.win32 \ game_ar \ outPYZ1.pyz / pyglet.app”,第264行
  运行中的文件“ game_ar \ build \ pyi.win32 \ game_ar \ outPYZ1.pyz / pyglet.app.win32”,第63行
  在_timer_func中,文件“ game_ar \ build \ pyi.win32 \ game_ar \ outPYZ1.pyz / pyglet.app.win32”,第84行
  空闲状态下的文件“ game_ar \ build \ pyi.win32 \ game_ar \ outPYZ1.pyz / pyglet.app”,第193行
  在dispatch_event中的文件“ game_ar \ build \ pyi.win32 \ game_ar \ outPYZ1.pyz / pyglet.window”,行1219
  在dispatch_event中的文件“ game_ar \ build \ pyi.win32 \ game_ar \ outPYZ1.pyz / pyglet.event”,第340行
  在on_draw中的文件“”,第546行
AttributeError:游戏实例没有属性'bg'

我的pyar.py文件。

用py2exe构建* .exe给了我这个输出:

以下模块似乎丢失
['ICCProfile','_ imaging_gif','_ scproxy']

我不明白,这与我的消息来源有关。我试图用py2exe和pyinstaller打包我的应用程序,但是输出是相同的。

我猜* .exe丢失了一些东西,但我不知道该怎么调试。


问题答案:

它与包装商无关。

问题是我没有关闭网络摄像头捕获,我的应用程序的多个进程实际上在后台运行。

文档正在讨论,ReleaseCapture但是此函数显然不在python绑定中,调用:

del(self.cam)

做得很好,self.cam是我的CvCapture目标。