永久修复Opencv视频捕获

时间:2017-11-04 16:03:40

标签: python opencv video ffmpeg

这个问题已在很多网站上多次提出,但不是最终的解决方案。我正在尝试使用函数运行Opencv视频:

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

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

非常感谢任何帮助。

我的平台是Ubuntu17和Python3。

2 个答案:

答案 0 :(得分:14)

这个答案是用Linux和Python编写的,但是一般的想法可以应用于OpenCV支持的任何操作系统和语言。

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

OpenCV FFMPEG支持:

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

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

输出应该是这样的:

  

FFMPEG:是

如果输出为No,请按照在线指南从源代码构建OpenCV,并提供ffmpeg支持。

FFMPEG编解码器:

FFMPEG可能没有针对您特定文件的编解码器。我们将以this video为例,说明FFMPEG是否具有此文件的解码功能。

首先,我们需要找到此视频文件中使用的编码格式。我们将使用mediainfo计划。在终端中,输入:

mediainfo video_file.mp4

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

pic

现在,我们尝试查找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支持此格式的编码和解码功能。

文件路径

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

答案 1 :(得分:0)

我跟着 从Link

开始的步骤

上面链接中的这个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_TBB = ON -DWITH_EIGEN = ON -DWITH_V4L = ON -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_EXECUTABLE = $(python3)-DPYTHON3_INCLUDE_DIR = $(python3 -c"来自distutils.sysconfig import get_python_inc; print(get_python_inc())")-DPYTHON3_PACKAGES_PATH = $(python3 -c"来自distutils .sysconfig import get_python_lib; print(get_python_lib())") - D CMAKE_BUILD_TYPE = RELEASE -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绑定得到更新