我运行以下命令来编译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文件。
答案 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/