问题描述:
在 CentOS 系统下使用 OpenCV 时,有时会遇到无法读取视频文件的情况,怎么解决呢?
解决步骤:
Step 1 - 安装依赖库
首先,需要安装一些 OpenCV 的依赖库,以确保能在 CentOS 系统中正常运行 OpenCV。执行以下命令即可安装:
sudo yum install -y epel-release
sudo yum update -y
sudo yum install -y cmake
sudo yum install -y gcc-c++
sudo yum install -y python3-devel
sudo yum install -y numpy
sudo yum install -y gtk2-devel
sudo yum install -y libdc1394-devel
sudo yum install -y libv4l-devel
sudo yum install -y gstreamer-plugins-base-devel
sudo yum install -y libpng-devel
sudo yum install -y libjpeg-turbo-devel
sudo yum install -y jasper-devel
sudo yum install -y openexr-devel
sudo yum install -y libtiff-devel
sudo yum install -y ffmpeg-devel
sudo yum install -y gstreamer-plugins-base-devel
Step 2 - 安装 OpenCV
执行以下命令以下载、编译和安装 OpenCV:
wget https://github.com/opencv/opencv/archive/4.5.1.zip -O opencv-4.5.1.zip
unzip -q opencv-4.5.1.zip
cd opencv-4.5.1/
mkdir build && cd build
cmake \
-DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DBUILD_opencv_python3=yes \
-DPYTHON3_EXECUTABLE=/usr/bin/python3 \
-DPYTHON3_INCLUDE_DIR=/usr/include/python3.6m/ \
-DPYTHON3_LIBRARY=/usr/lib64/libpython3.6m.so \
-DENABLE_CXX11=ON ..
make -j8
sudo make install
sudo ldconfig
Step 3 - 检查OpenCV是否安装成功
在安装完成后,我们需要检查一下 OpenCV 是否已经安装成功。执行以下代码:
python3 -c "import cv2; print(cv2.__version__)"
如果输出了 OpenCV 的版本号,表示已经成功安装。
Step 4 - 解决无法读取视频文件的问题
在 CentOS 系统下,有些视频编码格式不被支持,需要手动安装相应的库以解决这个问题。执行以下命令来安装:
sudo yum install gstreamer1-plugins-bad-free gstreamer1-plugins-base gstreamer1-plugins-good gstreamer1-plugins-ugly -y
sudo yum groupinstall 'Development Tools' -y
示例说明:
示例1:使用 OpenCV 读取 MP4 文件时,无法正常读取的问题
假设我们要使用 OpenCV 读取 video.mp4 文件,执行以下命令:
import cv2
cap = cv2.VideoCapture("video.mp4")
while True:
ret, frame = cap.read()
if not ret:
print("End of video")
break
cv2.imshow("frame", frame)
if cv2.waitKey(25) & 0xFF == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
如果不能正常读取 MP4 文件,则需要执行上述解决步骤,再次运行代码即可。
示例2:使用 OpenCV 读取 H.265 编码格式的视频文件时,无法正常读取的问题
假设我们要读取名为 test_video.h265 的视频文件,执行以下代码:
import cv2
cap = cv2.VideoCapture("test_video.h265")
while True:
ret, frame = cap.read()
if not ret:
print("End of video")
break
cv2.imshow("frame", frame)
if cv2.waitKey(25) & 0xFF == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
如果不能正常读取 H.265 编码格式的视频文件,则需要执行上述解决步骤,再次运行代码即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CentOS下OpenCV无法读取视频文件如何解决? - Python技术站