macos - 在 python Enthough (mac Yosemite) 中使用 opencv 读取 h.264 视频帧

标签 macos opencv ffmpeg h.264 enthought

我正在使用 Enthought 发行版 (Canopy) 在 IPython 笔记本中进行一些数据分析和计算机视觉。我想读取几个使用 h.264 编解码器的 .avi 文件的帧,并对这些图像进行一些注释。

如果您使用 Canopy 发行版,您知道可以通过包管理器安装 opencv(只需启动 Canopy 应用程序,单击包管理器,搜索 opencv 并安装包)。但问题是以下代码

import cv2
f = "/Volumes/DATA/temp.avi"
cap = cv2.VideoCapture(f)

flag,frame = cap.read()

print flag,frame

总是返回 (None,None) 因为 opencv 无法读取视频。因此,在 Enthought 包管理器中似乎默认未启用 ffmpeg。

我在这个问题上浪费了很多时间,所以我将在下面发布解决方案。希望它会帮助其他一些人!

最佳答案

遵循这些步骤(部分来自 this source ):

1)安装mp3lame

curl -L -o lame-3.99.5.tar.gz http://sourceforge.net/projects/lame/files/lame/3.99/lame-3.99.5.tar.gz/download
tar xzvf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure --disable-dependency-tracking CFLAGS="-arch i386 -arch x86_64" LDFLAGS="-arch i386 -arch x86_64"
make
sudo make install
cd ..

2)安装faac
curl -L -o faac-1.28.tar.gz http://sourceforge.net/projects/faac/files/faac-src/faac-1.28/faac-1.28.tar.gz/download
tar xzvf faac-1.28.tar.gz
cd faac-1.28
./configure --disable-dependency-tracking CFLAGS="-arch x86_64" LDFLAGS="-arch x86_64"
make
sudo make install
cd ..

3)安装faad
curl -L -o faad2-2.7.tar.gz http://sourceforge.net/projects/faac/files/faad2-src/faad2-2.7/faad2-2.7.tar.gz/download
tar xvzf faad2-2.7.tar.gz
cd faad2-2.7
./configure --disable-dependency-tracking CFLAGS="-arch i386 -arch x86_64" LDFLAGS="-arch i386 -arch x86_64"
make
sudo make install
cd ..

4)安装ffmpeg
curl -O http://ffmpeg.org/releases/ffmpeg-0.11.5.tar.gz
tar xzvf ffmpeg-0.11.5.tar.gz
cd ffmpeg-0.11.5
./configure --enable-libmp3lame --enable-libfaac --enable-nonfree --enable-shared --enable-pic --disable-mmx --arch=x86_64
make
sudo make install
cd ..

5) 从http://opencv.org/downloads.html下载opencv 2.4并将存档解压缩到硬盘上的某个位置

6) 启动 Canopy 终端(启动 canopy 应用程序 > 工具 > Canopy 终端)

7)导航到您的opencv文件夹并编辑modules/highgui/CMakeLists.txt文件并在“if(HAVE_FFMPEG)”之前添加这些行:
if(APPLE)
  list(APPEND HIGHGUI_LIBRARIES ${BZIP2_LIBRARIES} -lmp3lame -lfaac -lbz2)
endif(APPLE)

否则编译过程将在 34% 时失败。

8) 然后运行 ​​(modified from here)
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D PYTHON_EXECUTABLE=~/Library/Enthought/Canopy_64bit/User/bin/python -D PYTHON_PACKAGES_PATH=~/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/ -D PYTHON_LIBRARY=~/Library/Enthought/Canopy_64bit/User/lib/libpython2.7.dylib -D INSTALL_PYTHON_EXAMPLES=ON WITH_QUICKTIME=ON -D WITH_FFMPEG=ON -D WITH_AVFOUNDATION=ON ..
make -j8 
sudo make install

重要提示:确保 cmake 行上的路径与系统上的路径匹配!

而已。这是很多步骤,但最后你将在你的 Canopy 发行版中运行 opencv,你将能够阅读 h.264 .avi 视频!

关于macos - 在 python Enthough (mac Yosemite) 中使用 opencv 读取 h.264 视频帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28288630/

相关文章:

objective-c - 更改 CGDisplayMode 属性

java - 使用命令参数启动 native 终端 (Java)

opencv - TBB parallel_for,线程数更少

opencv - 从OpenCV的Essential矩阵正确解释 'recoverPose'之后的姿势(旋转和翻译)

python - 在 python 中使用 OCR 从图像中提取文本

ffmpeg - 你能从一个较大的文件中拼接出一个 1 分钟的剪辑,而不用转码吗?

ruby-on-rails - 无法安装 autotest-fsevent 或 rs-fsevent;收到 ld 错误但已安装 xcode

ruby - 将 Ruby 脚本从 Linux 盒子发送到远程 mac mini 以打开和关闭应用程序

ffmpeg - 使用 FFMPEG 将 YUV 帧转换为 RGBA 帧

video - 如何连接具有不同属性的ffmpeg中的视频?