为什么OpenCV不能用ffmpeg支持编译?

时间:2017-02-05 13:36:44

标签: python opencv ffmpeg

我运行以下命令来编译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作为捕获源的任何Python调用opencv都会失败。

我虽然设置了正确的路径,但是因为调用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

查看这些目录确实给了我cmakeoutput中列出的编解码器列表。

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

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

2 个答案:

答案 0 :(得分:0)

尝试Homebrew

brew install opencv3 --with-ffmpeg

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

列出所有可用的选项

brew info opencv3

答案 1 :(得分:0)

我必须遵循本教程,使用python virtualenv路径编译opencv导致出错,原因有些不妥。

我安装了opencv而没有设置virtualenv python路径然后将cv2.so文件复制到virtualenv python路径并且所有工作都神奇地工作。

我无法解释原因,但现在我可以在任何支持的格式下阅读没有扩展名的视频。

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