在 python Enthough (mac Yosemite) 中使用 opencv 读取 h.264 视频帧
Read h.264 video frames with opencv in python Enthough (mac Yosemite)
我正在使用 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
总是returns (None,None) 因为opencv无法读取视频。因此,Enthought 包管理器中似乎默认未启用 ffmpeg。
我在这个问题上浪费了很多时间,所以我将 post 下面的解决方案。希望它能帮助其他人!
遵循这些步骤(部分来自 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 视频!
我正在使用 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
总是returns (None,None) 因为opencv无法读取视频。因此,Enthought 包管理器中似乎默认未启用 ffmpeg。
我在这个问题上浪费了很多时间,所以我将 post 下面的解决方案。希望它能帮助其他人!
遵循这些步骤(部分来自 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 视频!