这个问题已在很多网站上多次提出,但不是最终的解决方案。我正在尝试使用函数运行Opencv视频:
import cv2
cap = cv2.VideoCapture('video.mp4')
if(cap.isOpened()==False):
print "Error opening camera"
但每次都失败了。我已尝试过来自各个站点的几乎所有步骤,但无法使其工作(包括单独重建ffmpeg)。
非常感谢任何帮助。
我的平台是Ubuntu17和Python3。
答案 0 :(得分:14)
这个答案是用Linux和Python编写的,但是一般的想法可以应用于OpenCV支持的任何操作系统和语言。
未打开视频文件的VideoCapture
类可能有多种原因,但以下三种情况适用于大多数情况。
默认情况下,OpenCV使用ffmpeg来读取视频文件。 OpenCV可能尚未使用FFMPEG支持构建。要确定OpenCV是否使用FFMPEG支持构建,请在终端输入:
python -c "import cv2; print(cv2.getBuildInformation())" | grep -i ffmpeg
输出应该是这样的:
FFMPEG:是
如果输出为No
,请按照在线指南从源代码构建OpenCV,并提供ffmpeg支持。
FFMPEG可能没有针对您特定文件的编解码器。我们将以this video为例,说明FFMPEG是否具有此文件的解码功能。
首先,我们需要找到此视频文件中使用的编码格式。我们将使用mediainfo
计划。在终端中,输入:
mediainfo video_file.mp4
在输出中,在视频标题下,查找格式。在这种情况下,使用的视频编码是 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支持此格式的编码和解码功能。
最后,检查文件路径是否正确,甚至文件是否存在。
答案 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绑定得到更新