📅  最后修改于: 2023-12-03 14:44:54.471000             🧑  作者: Mango
当使用 OpenCV 读取 MP4 格式的视频文件时,会遇到上述错误。这是因为 OpenCV 编译时没有包含 FFMPEG 库,无法正确解码 MPEG 格式的视频文件。
要解决此问题,我们需要重新编译 OpenCV 并包含 FFMPEG 库。以下是解决方法:
在官网 https://ffmpeg.org/download.html 上下载最新版本的 FFMPEG 库,并解压到本地目录。
假设我们使用的是 Ubuntu 系统,我们需要在终端执行以下命令:
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
然后我们需要克隆 OpenCV 源码:
git clone https://github.com/opencv/opencv.git
接着,在 OpenCV 源码目录下创建一个 build 目录,并进入该目录:
cd opencv
mkdir build
cd build
使用以下命令,编译 OpenCV:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=ON -D WITH_FFMPEG=ON -D CMAKE_INSTALL_PREFIX=/usr/local ..
其中 WITH_FFMPEG=ON 表示启用 FFMPEG 库的支持。
编译完成后,使用以下命令安装 OpenCV:
sudo make install
使用以下 Python 代码打开 MP4 视频文件:
import cv2
cap = cv2.VideoCapture('path/to/video.mp4')
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow('Video', frame)
if cv2.waitKey(1) == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
如果能够成功打开视频文件并显示,说明 OpenCV 成功包含了 FFMPEG 库并能正确解码 MPEG 格式的视频文件。如果还有问题,检查编译过程中是否有报错信息,或者留言咨询。