用openCV cv2VideoCaptu打开视频文件时出错

2024-09-26 17:53:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我这里有一个视频文件/数据/输出.mp4以及它的拷贝/数据/输出。 我在Osx Sierra和Xcode 8。在

带mp4扩展名的开放视频是可以的,但是没有扩展名或任何其他格式都会出错。在

我试用了git的opencv2.4和最新的3.2。 用ffmpeg release/2.0和tryed release/3.0编译

使用opencv 3.2版:

Python 2.7.10 (default, Jul 30 2016, 19:40:32)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.2.0-dev'
>>> cv2.__file__
'/Users/johndoe/work/myproject/venv/local/lib/python2.7/site-packages/cv2.so'

如果视频有扩展名:

^{pr2}$

如果视频没有扩展名:

>>> v=cv2.VideoCapture('/data/out')
VIDEOIO(cvCreateFileCapture_AVFoundation (filename)): raised unknown C++ exception!

>>> v.get(cv2.CAP_PROP_FRAME_COUNT)
0.0

我的FFmpeg配置:

./configure --prefix=/usr \
--bindir=/usr/local/bin/ \
--shlibdir=/usr/lib64 \
--datadir=/usr/share/ffmpeg \
--incdir=/usr/include/ffmpeg \
--libdir=/usr/lib64 \
--mandir=/usr/share/man \
--extra-cflags='-O2 -g' \
--extra-version=rpmfusion \
--enable-bzlib  \
--enable-nonfree \
--enable-libopenjpeg \
--enable-libx264  \
--enable-avfilter \
--enable-postproc \
--enable-pthreads \
--disable-static \
--enable-shared \
--enable-gpl \
--enable-runtime-cpudetect \
--arch=x86_64

我的opencv CMAKE:

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/Users/johndoe/work/myproject/venv/local/ \
-D INSTALL_C_EXAMPLES=OFF \
-D PYTHON_PACKAGES_PATH=/Users/johndoe/work/myproject/venv/lib/python2.7/site-packages \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D PYTHON_EXECUTABLE=/Users/johndoe/work/myproject/venv/bin/python \
-D WITH_CUDA=OFF ..

我尝试了各种其他格式重新编码我的原始视频(即:ffmpeg-I)输出.mp4输出.asf)以下内容:

>>> v=cv2.VideoCapture('/data/out.avi')
VIDEOIO(cvCreateFileCapture_AVFoundation (filename)): raised unknown C++ exception!

>>> v=cv2.VideoCapture('/data/out.flv')
VIDEOIO(cvCreateFileCapture_AVFoundation (filename)): raised unknown C++ exception!

>>> v=cv2.VideoCapture('/data/out.asf')
VIDEOIO(cvCreateFileCapture_AVFoundation (filename)): raised unknown C++ exception!

Tags: data视频venvenableusrmyprojectoutcv2
2条回答

我有同样的问题,请把绝对媒体文件路径。在

OpenCV可能使用不同的捕获API。可以通过将API指定为VideoCapture()的第二个参数来实施API:

v = cv2.VideoCapture('/data/out', cv2.CAP_FFMPEG)

我尝试过cv2.VideoCapture(),文件有扩展名也没有扩展名,它使用默认的捕获API工作得很好。请注意,我使用的是osxel Captain,使用的是python3.5.2和opencv3.1,所有这些都是conda(Anaconda)安装的。在

相关问题 更多 >

    热门问题