2015-04-23 292 views
0

我有一個python程序,它使用OpenCV從視頻文件中獲取幀進行處理。然後我使用py2exe創建一個獨立的可執行文件(也試過pyinstaller並得到相同的錯誤)。我的電腦和目標計算機都是Windows 7,但目標計算機沒有安裝python。我使用OpenCV從視頻文件中讀取幀頻和個別圖像。OpenCV與獨立的python可執行文件(py2exe/pyinstaller)

問題:當我在目標計算機上運行可執行文件時,幀速率返回爲0.0,我無法讀取幀。

如果在目標機器上安裝了python,那麼可執行文件按預期運行,否則會產生此錯誤。因此,似乎可執行文件中缺少某些內容,但創建可執行文件時我沒有發現錯誤,以指示可能丟失的內容。

其他誰報告類似的問題通常沒有包括numpy依賴(並得到一個錯誤表明這一點),但我已經包括numpy。我也嘗試過包括整個PyQt4模塊,因爲它被列爲OpenCV的python xy站點的依賴項(我已經爲代碼的其他部分提供了部分PyQt4),這也不能解決問題。

+0

py2exe是不完美的,所以經常會錯過一些圖書館或dll,pyd等需要。最有可能你缺少opencv_highgui249.dll和opencv_ffmpeg249.dll等。我會使用py2exe沒有啓用單個可執行文件選項。並且,開始手動複製您的應用可能需要的文件。識別它們後,修改setup.py以使py2exe自動包含它們。 – otterb

+0

你能顯示你的setup.py嗎?目標機器不應該安裝Python相關的任何東西,py2exe將包含需要的東西,有時它也需要一些幫助。 – Werner

+0

@otterb。我將我的可執行文件中的dll文件與Python27/DLL文件夾中的opencv _ * .dll文件進行了比較。我的可執行文件只包含14個(我已經有opencv_highgui249.dll)。我試着添加了6個缺失的並修復了這個錯誤。如果我只添加open_cvffmpeg249.dll,它也修復了這個錯誤,但我不確定是否不包括其他錯誤會導致我還沒有確定的錯誤。 感謝您的回覆。也許有人明白「鉤子」是如何工作的,可以提交一個給pyinstaller解決這個問題? –

回答

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位於相同的路徑隨發行版一起提供的文件。

0

嘗試使用pyinstaller,使用pip下載:

pip install pyinstaller 

,如果你不知道如何安裝點子,嘗試下載蟒蛇2.7.9或以上,其中有內置的點子,但不要忘了加環境可變因素蟒蛇路徑,這個過程在這篇文章中提到:

How to run Pip commands from CMD

安裝pyinstaller後,選擇你的項目的主要文件,並運行此命令

pyinstaller yourprogram.py 

它會創建一個應用程序文件夾命名文件名,並最終確保numpy的和OpenCV是在C文件夾python27的lib->站點包文件夾中運行該命令

希望它有助於!

相關問題