可执行文件中的Python OpenCV流视频错误

yftpprvb  于 12个月前  发布在  Python
关注(0)|答案(2)|浏览(132)

在我的python应用程序中,我使用OpenCV,除其他外,从IP摄像机流式传输视频:

cap = cv2.VideoCapture("http://usr:[email protected]/video.cgi")

一切正常
但是我需要获得一个可执行文件,所以我使用了PyInstaller。在结果.exe中,流不再工作。
相反,如果我用这个来改变捕获:

# works with camera_num = 0 (pc's webcam) and = 1 (external USB webcam)
cap = cv2.VideoCapture(camera_num)

从我的电脑摄像头捕捉,或与外部USB摄像头,一切工作.
有什么建议吗?

yiytaume

yiytaume1#

感谢@GPPK和@Dan Mašek的评论,我可以解决这个问题。
问题是,就像@Dan Mašek说的,“FFMPEG不是一个硬依赖”。
所以一个解决方案是搜索OpenCV的FFMPEG dll。从cosnole启动python

# import OpenCV module
import cv2
# retrieve the pathname of the file from which the module was loaded
cv2.__file__

输出应该类似于:

'C:\\Users\\luke\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages\\cv2\\cv2.cp36-win_amd64.pyd'

转到cv2文件夹,搜索opencv_ffmpeg340_64.dll并将其复制到python应用程序的文件夹中。
现在我们必须告诉PyInstaller将此dll添加到.exe

pyinstaller -F --add-data "opencv_ffmpeg340_64.dll;." test.py
llycmphe

llycmphe2#

我在c++中也遇到了同样的问题,我在重新编译opencv后,首先安装了gstream,ffmpeg和opencv-python,解决了这个问题。也许你可以用同样的方法来处理python。

相关问题