使用 `libopencv_ffmpeg.so` 在 Linux 上构建 OpenCV 2.4.11
Building OpenCV 2.4.11 on Linux with `libopencv_ffmpeg.so`
下载OpenCV源码时,无论是Windows还是Linux,sources目录只包含Windows已经编译好的共享库3rdparty/ffmpeg/opencv_ffmpeg.dll
,这对于 VideoCapture
模块在 OpenCV 的 Python 移植上工作是必不可少的。
在 Linux 中,由于没有提供此文件,您希望在构建 OpenCV 时自动构建它,尤其是在 CMakeCache.txt
中,您可以发现行 WITH_FFMPEG:BOOL=ON
.
当然没有建...有什么想法吗?
找到了一个很好的解决方法 - 与大家分享。
我没有使用 OpenCV 的 VideoCapture
,而是使用库 scikit-video
。
首先,安装它(确保安装足够晚的版本):
pip install sk-video
然后,通过以下方式阅读视频:
import skvideo.io
cap = skvideo.io.vreader(input_video_filepath)
metadata = skvideo.io.ffprobe(input_video_filepath)
framerate = metadata['video']['@r_frame_rate']
for frame in cap:
# Do whatever you want...
# "cap" is a generator, the for loop will simply end when there are no more frames
# "frame" is a NumPy array, just like in OpenCV's VideoCapture
此处提供更多文档和示例:http://www.scikit-video.org/stable/io.html
下载OpenCV源码时,无论是Windows还是Linux,sources目录只包含Windows已经编译好的共享库3rdparty/ffmpeg/opencv_ffmpeg.dll
,这对于 VideoCapture
模块在 OpenCV 的 Python 移植上工作是必不可少的。
在 Linux 中,由于没有提供此文件,您希望在构建 OpenCV 时自动构建它,尤其是在 CMakeCache.txt
中,您可以发现行 WITH_FFMPEG:BOOL=ON
.
当然没有建...有什么想法吗?
找到了一个很好的解决方法 - 与大家分享。
我没有使用 OpenCV 的 VideoCapture
,而是使用库 scikit-video
。
首先,安装它(确保安装足够晚的版本):
pip install sk-video
然后,通过以下方式阅读视频:
import skvideo.io
cap = skvideo.io.vreader(input_video_filepath)
metadata = skvideo.io.ffprobe(input_video_filepath)
framerate = metadata['video']['@r_frame_rate']
for frame in cap:
# Do whatever you want...
# "cap" is a generator, the for loop will simply end when there are no more frames
# "frame" is a NumPy array, just like in OpenCV's VideoCapture
此处提供更多文档和示例:http://www.scikit-video.org/stable/io.html