OpenCV与独立的python可执行文件(py2exe / pyinstaller)

时间:2015-04-23 00:28:30

标签: python opencv py2exe pyinstaller

我有一个python程序,它使用OpenCV从视频文件中获取帧以进行处理。然后我使用py2exe创建一个独立的可执行文件(也试过pyinstaller并得到相同的错误)。我的计算机和目标计算机都是Windows 7,但目标计算机没有安装python。我使用OpenCV来读取视频文件中的帧速率和单个图像。

问题:当我在目标计算机上运行可执行文件时,帧速率返回为0.0,我无法读取帧。

如果在目标计算机上安装了python,则可执行文件按预期运行,否则会产生此错误。因此,可执行文件中似乎缺少某些内容,但在创建可执行文件时我没有收到任何错误,以指示可能缺少的内容。

其他报告类似问题的人通常没有包括numpy依赖(并且得到错误表明这一点),但我已经包含了numpy。我也试过包含整个PyQt4模块,因为它被列为对OpenCV的python xy站点的依赖(我已经为代码的其他部分安装了部分PyQt4),这也没有解决问题。

2 个答案:

答案 0 :(得分:0)

我想我会继续为此发布答案,但@otterb在对问题的评论中提供了解决方案。我在这里粘贴文字:

" py2exe并不完美,所以经常会错过一些库或dll,pyd等。很可能你缺少opencv_highgui249.dl l和opencv_ffmpeg249.dll等。我会使用py2exe而没有启用单个可执行选项。并且,开始手动复制应用程序可能需要的文件。在识别它们之后,修改setup.py以获取py2exe以自动包含它们。"

但是我会注意到我使用pyinstaller而不是py2exe,因为我在构建时遇到的问题更少。我仍然需要手动复制opencv dll文件。在Windows 7上,它们位于:" C:\ Python27 \ DLLs"并且需要将它们复制到分发文件夹中,以便它们与分发的其他dll文件位于同一路径上。

答案 1 :(得分:0)

尝试使用pyinstaller,使用pip下载

pip install pyinstaller

如果您不知道如何安装pip,请尝试下载内置pip的python 2.7.9或更高版本,但不要忘记将python路径添加到环境变量中,此过程在本文中提到:

How to run Pip commands from CMD

安装pyinstaller后,选择项目的主文件并运行此命令

pyinstaller yourprogram.py

它将创建包含命名文件名的应用程序文件的文件夹,最后确保numpy和opencv在运行该命令时在C文件夹中的python27的lib-> site-packages文件夹中

希望它有帮助!