在我的python应用程序中,我正在使用OpenCV来从IP摄像机流式传输视频:
cap = cv2.VideoCapture("http://usr:psw@192.168.1.1/video.cgi")
并且一切正常。
但是我需要获得一个可执行文件,因此我使用了
PyInstaller
。在生成的.exe
中,流不再起作用。相反,如果我以此更改捕获:
# works with camera_num = 0 (pc's webcam) and = 1 (external USB webcam)
cap = cv2.VideoCapture(camera_num)
从我的电脑的网络摄像头捕获,或与外部USB网络摄像头捕捉,一切正常。
有什么建议么?
最佳答案
感谢@GPPK和@DanMašek的评论,我可以解决问题。
就像@DanMaš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
关于python - 可执行文件中的Python OpenCV流视频错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49881907/