OpenCV VideoCapture 无法打开

15 投票
2 回答
28757 浏览
提问于 2025-04-18 12:59

我正在尝试在一个运行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

我也遇到过类似的问题。可能的解决办法有:

  1. 检查一下你给的路径是否正确。

  2. 如果你是通过pip安装的OpenCV,那可能会有问题。你可以先卸载OpenCV,然后按照官方文档的说明重新安装。

  3. 通过pip安装的方法:
    pip install opencv-python 这个命令只安装主要模块。
    pip install opencv-contrib-python 这个命令会安装主要模块和附加模块,所以建议使用这个命令。

撰写回答