【问题标题】:Why does OpenCV not compile with ffmpeg support?为什么 OpenCV 不支持 ffmpeg 编译?
【发布时间】:2017-06-22 12:06:08
【问题描述】:

我运行了以下命令来编译opencv:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/Users/user/work/repo/venv/local/ -D INSTALL_C_EXAMPLES=OFF -D PYTHON_PACKAGES_PATH=/Users/user/work/repo/venv/lib/python2.7/site-packages -D INSTALL_PYTHON_EXAMPLES=ON -D PYTHON_EXECUTABLE=/Users/user/work/repo/venv/bin/python -D WITH_CUDA=OFF -D FFMPEG_INCLUDE_DIR=/usr/include/ffmpeg -D FFMPEG_LIB_DIR=/usr/lib64 -D WITH_FFMPEG=YES ..

导致:

--   Video I/O:
--     DC1394 1.x:                  NO
--     DC1394 2.x:                  NO
--     FFMPEG:                      NO
--       avcodec:                   YES (ver 57.75.100)
--       avformat:                  YES (ver 57.63.100)
--       avutil:                    YES (ver 55.45.100)
--       swscale:                   YES (ver 4.3.101)
--       avresample:                NO

那么任何使用 ffmpeg 作为捕获源对 opencv 的 Python 调用都会失败。

虽然我设置了正确的路径,但调用 ffmpeg 命令行返回:

$ ffmpeg
ffmpeg version n3.0.5-19-ga71d22d-rpmfusion Copyright (c) 2000-2016 the FFmpeg developers
  built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
  configuration: --prefix=/usr --bindir=/usr/local/bin/ --shlibdir=/usr/lib64 --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --extra-cflags='-O2 -g' --extra-version=rpmfusion --enable-bzlib --enable-nonfree --enable-libopenjpeg --enable-libx264 --enable-avfilter --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --enable-runtime-cpudetect --arch=x86_64

在那些目录中查找确实会给我 cmake 输出中列出的编解码器列表。

我在 OSX Sierra,opencv 和 ffmpeg 都是手动编译的。

我可以很好地运行 ffmpeg 命令行来转换我需要的任何视频文件。只要我使用默认的捕获源而不是 cv2.CAP_FFMPEG,我也可以启动 Python shell 并使用 opencv 导入并打开视频正常工作。这意味着我现在只能打开 mp4 文件。

【问题讨论】:

  • 要编译你可能需要 ffmpeg 的源代码或至少头文件*.h - 也许有ffmpeg-dev 包只有.h 文件。

标签: python opencv ffmpeg


【解决方案1】:

试试Homebrew

brew install opencv3 --with-ffmpeg

根据您的需要,您可以添加选项--with-python3 和/或--with-contrib

列出所有可用的选项运行

brew info opencv3

【讨论】:

  • brew install opencv3 导致没有 pkg​​config 错误或类似的错误,不记得确切的错误,即使使用 brew reinstall pkg-config 我也无法使其工作。
【解决方案2】:

我必须按照本教程进行操作,使用 python virtualenv 路径编译 opencv 会由于一些晦涩的原因导致错误。

我在没有设置 virtualenv python 路径的情况下安装了 opencv,然后将 cv2.so 文件复制到 virtualenv python 路径,一切都神奇地工作了。

我无法解释为什么,但现在我可以阅读任何支持格式的不带扩展名的视频。

http://www.pyimagesearch.com/2016/11/28/macos-install-opencv-3-and-python-2-7/

【讨论】:

    猜你喜欢
    • 2010-12-01
    • 2018-01-13
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    相关资源
    最近更新 更多