首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Opencv视频捕获的永久修复

Opencv视频捕获的永久修复
EN

Stack Overflow用户
提问于 2017-11-05 00:03:40
回答 2查看 9.8K关注 0票数 7

这个问题在许多网站上被提出了无数次,但没有明确的解决方案。我正在尝试使用函数运行带有视频的Opencv:

代码语言:javascript
复制
import cv2
cap = cv2.VideoCapture('video.mp4')
if(cap.isOpened()==False):
print "Error opening camera"

但它每次都会失败。我从不同的站点尝试了几乎所有的步骤,但都不能让它工作(包括单独重建ffmpeg )。

任何帮助都将不胜感激。

我的平台是Ubuntu17和Python3。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-05 07:16:32

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

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

OpenCV FFMPEG支持:

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

代码语言:javascript
复制
python -c "import cv2; print(cv2.getBuildInformation())" | grep -i ffmpeg

输出应如下所示:

FFMPEG:是

如果输出是No,那么按照在线指南从源代码构建支持OpenCV的ffmpeg。

FFMPEG编解码器:

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

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

代码语言:javascript
复制
mediainfo video_file.mp4

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

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

代码语言:javascript
复制
ffmpeg -codecs | grep -i avc

在我的机器上,输出是:

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

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

文件路径

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

票数 20
EN

Stack Overflow用户

发布于 2018-02-19 18:37:39

我遵循了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“导入系统;print(sys.prefix)") -DPYTHON3_EXECUTABLE=$(which python3) -DPYTHON3_INCLUDE_DIR=$(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;PYTHON_EXECUTABLE=/home/user/anaconda3/bin/python (get_python_lib())“) -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/ -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF -D print -D BUILD_EXAMPLES=ON -DCMAKE_BUILD_TYPE=RELEASE ..

我不擅长OpenCV构建,但确切的PYTHON_EXECUTABLE=/home/user/anaconda3/bin/python路径是我认为特定OpenCV的OpenCV绑定应该更新的点

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47112642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档