OpenCV VideoCapture 无法打开
我正在尝试在一个运行Ubuntu 14.04的亚马逊服务器上使用OpenCV的cv2 Python绑定,但我发现VideoCapture无法正常工作。
我尝试以如下方式打开默认的捕获:
import cv2
cap = cv2.VideoCapture(0)
cap.isOpened() #Returns false
我在本地机器上测试过,结果是正常的,所以我的OpenCV配置可能有问题。我尝试了很多方法:
- 使用一个我确认指向.mp4文件的实际文件路径
- 在第二行用-1和1替代0
- 安装ffmpeg(因为在Ubuntu 14.04上默认没有,所以是从一个ppa安装的),然后重新编译OpenCV
- 完全删除我的OpenCV目录,然后使用这里的脚本重新编译
- 检查并重新安装其他一些库,包括x264、gstreamer和gtk
现在我有点无计可施了。有没有人知道可能出什么问题了?
编辑:OpenCV版本是2.4.9。
2 个回答
1
我之前也遇到过同样的问题,但成功解决了。
你需要在构建OpenCV的时候加上WITH_FFMPEG这个选项:
cmake .. -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DWITH_GTK=ON -DWITH_FFMPEG=1
然后在FFMPEG的部分,你应该能看到到处都是“YES”:
Video I/O:
-- DC1394 1.x: NO
-- DC1394 2.x: YES (ver 2.2.5)
-- FFMPEG: YES
-- avcodec: YES (ver 57.107.100)
-- avformat: YES (ver 57.83.100)
-- avutil: YES (ver 55.78.100)
-- swscale: YES (ver 4.8.100)
-- avresample: YES (ver 3.7.0)
-- GStreamer: NO
-- OpenNI: NO
-- OpenNI PrimeSensor Modules: NO
-- PvAPI: NO
-- GigEVisionSDK: NO
-- UniCap: NO
-- UniCap ucil: NO
-- V4L/V4L2: NO/YES
-- XIMEA: NO
-- Xine: NO
如果你没有看到“YES”,那就需要通过apt安装以下软件包(如果你使用的是Debian或Ubuntu Linux):
sudo apt-get install libav-tools libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libx264-dev
9
我也遇到过类似的问题。可能的解决办法有:
检查一下你给的路径是否正确。
如果你是通过pip安装的OpenCV,那可能会有问题。你可以先卸载OpenCV,然后按照官方文档的说明重新安装。
通过pip安装的方法:
pip install opencv-python
这个命令只安装主要模块。
pip install opencv-contrib-python
这个命令会安装主要模块和附加模块,所以建议使用这个命令。