【问题标题】:OpenCV 2.4 VideoCapture not working on WindowsOpenCV 2.4 VideoCapture 在 Windows 上不起作用
【发布时间】:2012-07-26 19:27:08
【问题描述】:

我正在使用 Python 绑定到安装了以下 instructions 的 OpenCV 2.4。

我的问题类似于this one,但是我需要Windows机器解决方案。

问题:当我尝试使用时

cap = cv2.VideoCapture(0)
print cap.grab()

它工作正常,但是下面的代码

cap = cv2.VideoCapture(filename)
print cap.grab()

总是返回 False。

文件路径正确、绝对且没有空格。

我在两台装有 Windows XP 和 Windows 7 的机器上进行了尝试,结果相似。在 Linux (Ubuntu) 上它对我来说很好。

【问题讨论】:

  • 你能发布文件名的值吗?尝试使用filename = os.path.join( filename )。更多信息在这里:stackoverflow.com/questions/1633643/…
  • 它是"C:\\m.avi",但我刚刚尝试了"C:\m.avi""C:/m.avi"。它仍然无法正常工作(有和没有os.path.join)。
  • 检查 opencv_ffmpeg.dll 是否与 python 使用的其他 OpenCV dll 位于同一目录中。另外,尝试另一个 avi 文件。有时 OpenCV 无法解码其他程序(例如 Windows Media Player)正确播放的文件
  • 我没有在我的计算机上找到任何名称中带有“opencv”的文件(opencv 文件夹及其内容除外)。所以我只是尝试将opencv_ffmpeg.dll复制到C:\Python27\Lib\site-packages` (like cv2.pyd`)但它不起作用。
  • 这个问题的答案:stackoverflow.com/questions/12279833/… 似乎也很相关并且很有帮助。

标签: python windows opencv


【解决方案1】:

C:\OpenCV\3rdparty\ffmpeg\ 添加到Windows PATH 环境变量或将opencv_ffmpeg.dll 从该目录复制到C:\Python27\ 或PATH 中的目录。或者,使用来自http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv 的 OpenCV 二进制文件。

可能还需要重命名opencv_ffmpeg.dll 文件。

对于 OpenCV 版本 X.Y.Z
opencv_ffmpeg.dll ==> opencv_ffmpegXYZ.dll

对于 64 位 OpenCV 版本 X.Y.Z
opencv_ffmpeg.dll ==> opencv_ffmpegXYZ_64.dll

【讨论】:

  • 谢谢!它有效,但前提是您从 C:\OpenCV\3rdparty\ffmpeg`, not just opencv_ffmpeg.dll 复制 all 文件。
  • 查看下面的所有答案。对于 OpenCV 版本 X.YZ,似乎需要将 opencv_ffmpeg.dll 文件重命名为 opencv_ffmpegXYZ.dll,如果使用 64 位版本,则需要重命名为 opencv_ffmpegXYZ_64.dll
  • 使用 OpenCV 2.4.10,将 C:\opencv\sources\3rdparty\ffmpeg 添加到 Windows 路径并将 opencv_ffmpeg.dll 和 opencv_ffmpeg_64.dll 重命名为 opencv_ffmpeg2410.dll 和 opencv_ffmpeg2410_64.dll 即可!谢谢 :) 我现在可以打开 MJPEG 视频文件
  • 谢谢 - 这行得通!令人沮丧的是,如果没有复制该 DLL,这个“静默失败”。我宁愿不是一个微妙的错误,一个很好的大异常“错误,Danger Will Robinson,缺少 dll <...>”然后死。
  • 我会推荐第二个选项(使用来自lfd.uci.edu/~gohlke/pythonlibs/#opencv 的 OpenCV 二进制文件)。它更干净,也很简单。感谢您的帮助。
【解决方案2】:

复制 opencv_ffmpeg.dll 对我来说还不够 - 当我在 Python 2.7.5 中使用 OpenCV 2.4.6 时,我不得不将其重命名为 opencv_ffmpeg246.dll

【讨论】:

  • 同样,我命名为 opencv_ffmpeg310.dll
  • 与 2.4.10 相同!谢谢
【解决方案3】:

我首先尝试复制,然后更改 Windows 的 Path 环境。直到我将我的 openCV 版本 2.4.5 和 python 2.7 的名称更改为 opencv_ffmpeg245.dll,它才起作用。 (注意**245.dll来自opencv 2.4.5版)

【讨论】:

    【解决方案4】:

    对于 64 位版本,将 opencv_ffmpeg_64.dll 重命名为 opencv_ffmpeg249_64.dll 将 249 更改为您的 opencv 版本。

    【讨论】:

      【解决方案5】:

      对于 64 位环境上的 OpenCV 3.0.0,复制 opencv_ffmpeg_64.dll 并将其重命名为 opencv_ffmpeg300_64.dll。

      还要将此路径添加到您的 PATH 环境变量中,以使其在 Java 下与 OpenCV 一起使用。

      【讨论】:

      • 也适用于 pyhon
      【解决方案6】:

      更新:对于 OpenCV 2.4.9 仍然如此,复制所有文件,并将 dll 重命名为 opencv_ffmpeg249.dll

      【讨论】:

      • 我无法让它在 OpenCV 3.0.0-tp2 Windows 上工作,对于绝望的编码员有什么提示吗? :)
      【解决方案7】:

      我在 python 2.7 和 opencv 2.4.10 上遇到了同样的问题。我将 opencv_ffmpeg2410_64.dll 文件从 C:\Applications\opencv\build\x64\vc10\bin 复制到 python 路径中(我的是在 C:\Users\mohammad\Anaconda),它已经解决了!

      【讨论】:

        【解决方案8】:

        一开始我使用的是 windows8.1 32bit 和 opencv 2.4.10。
        我在使用由 Logicool C270 制作的文件 test1.wmv 时遇到了同样的问题。
        我尝试使用由数码相机(佳能 SX160)制作的其他文件test2.mov。 所以我可以玩test2.mov 来追加路径C:\opencv\build\x86\vc12\bin
        但我不能玩test1.wmv.
        所以我尝试使用 VLC 将格式 test1.wmv 更改为 test1a.mp4(到 Video for youtube HD)。
        那我可以玩test1a.mp4.
        我在 Ubuntu 14.04 LTS 上尝试了test1.wmv,然后我就可以轻松玩了。
        windows8.1 和 Ubuntu 14.04 LTS 之间的默认 ffmpeg 二进制文件可能会出现一些差异。

        【讨论】:

          【解决方案9】:

          对于 anaconda 环境 从 C:\Python27\ 复制 opencv_ffmpeg249_64.dll 根据您的 opencv 正确版本重命名其版本 并通过它到 C:\Users\KHALID\Anaconda2\Library\bin

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-03-08
            • 2012-07-11
            • 2018-08-23
            • 2015-11-24
            • 2013-10-24
            • 2016-06-17
            相关资源
            最近更新 更多