繁体   English   中英

Opencv 视频捕捉的永久修复

[英]Permanent fix for Opencv videocapture

这个问题已经在很多网站上提出过很多次,但都没有最终的解决方案。 我正在尝试使用以下功能运行带有视频的 Opencv:

import cv2
cap = cv2.VideoCapture('video.mp4')
if(cap.isOpened()==False):
print "Error opening camera"

但是每次都失败。 我已经尝试了来自各个站点的几乎所有步骤,但无法使其正常工作(包括单独重建 ffmpeg)。

任何帮助将非常感激。

我的平台是 Ubuntu17 和 Python3。

这个答案是用 Linux 和 Python 编写的,但总体思路可以应用于 OpenCV 支持的任何操作系统和语言。

VideoCapture类未打开视频文件可能有多种原因,但以下三种情况适用于大多数情况。

OpenCV FFMPEG 支持:

默认情况下,OpenCV 使用 ffmpeg 来读取视频文件。 OpenCV 可能没有使用 FFMPEG 支持构建。 要了解 OpenCV 是否支持 FFMPEG,请在终端输入:

python -c "import cv2; print(cv2.getBuildInformation())" | grep -i ffmpeg

输出应该是这样的:

FFMPEG:是的

如果输出为No则按照在线指南从具有 ffmpeg 支持的源代码构建 OpenCV。

FFMPEG 编解码器:

FFMPEG 可能没有用于您的特定文件的编解码器。 我们将 以此视频为例,说明 FFMPEG 是否具有该文件的解码能力。

首先,我们需要找到这个视频文件使用的编码格式。 我们将使用mediainfo程序。 在终端输入:

mediainfo video_file.mp4

在输出中,在视频标题下,查找format 在这种情况下,使用的视频编码是AVC ,这是 H264 的另一个名称。

图片

现在,我们尝试查找 FFMPEG 是否支持用于解码AVC编码文件的编解码器。 在终端:

ffmpeg -codecs | grep -i avc

在我的机器上,输出是:

DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 第 10 部分(解码器:h264 h264_crystalhd h264_vdpau)(编码器:libx264 libx264rgb)

我们对DEV感兴趣,它代表解码、编码和视频。 这意味着AVC是一种视频编码格式,FFMPEG 支持此格式的编码和解码功能。

文件路径

最后,检查文件路径是否正确,或者文件是否存在。

我按照链接中的步骤操作

上面链接中的这个 Cmake 命令如下所示

cmake -DWITH_CUDA=OFF -DBUILD_TIFF=ON -DBUILD_opencv_java=ON -DWITH_FFMPEG=ON -DBUILD_opencv_python3=ON -DENABLE_AVX=ON -DWITH_OPENGL=ON -DWITH_OPENCL=ON -DWITH_IPP=ON -DWITH_WEITHOND=ON-DWITH_WEITHOND DWITH_VTK=OFF -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_opencv_python2=OFF -DCMAKE_INSTALL_PREFIX=$(python3 -c "import sys; print(sys.prefix)") -DPYTHON3_which pythonDE_EXECUTABLE=OFF $(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") -DPYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") -D CMAKE_BUILD_TYPE=R -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF -D PYTHON_EXECUTABLE=/home/user/anaconda3/bin/python -D BUILD_EXAMPLES=ON -DCMAKE_BUILD_TYPE.=RELEASE

我不太了解 OpenCV 构建,但确切的PYTHON_EXECUTABLE=/home/user/anaconda3/bin/python路径是我认为特定 python 的 OpenCV 绑定要更新的要点

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM