以前都是直接opencv读取视频流(usb摄像头或者是rtsp视频流),这次第一次使用opencv读取本地视频文件,然后报错,在这里记录一下。

🤓1. 解决方式

1.1 尝试4 ✅

根据stack overflow的回答-Cannot open “.mp4” video files using OpenCV 2.4.3, Python 2.7 in Windows 7 machine
考虑寻找opencv中的一个和ffmpeg相关的dll文件——opencv_ffmpeg<version>.dll

由于我是使用anaconda安装的,所以去寻找的时候发现和opencv相关的文件夹有3个,其中包含dll文件的就只有cv2这个文件夹:

|--site-packages
	|--cv2
		|-- opencv_videoio_ffmpeg452_64.dll
	|--opencv_contrib_python-4.5.2.52.dist-info
	|--opencv_python-4.5.2.52.dist-info

将这个dll文件放在自己脚本的同级目录下,运行即可。(与视频文件是.avi还是.mp4无关)

|-- XXX_read_video.py
|-- opencv_videoio_ffmpeg452_64.dll

👑2. 无效解决


2.1 尝试1

安装一个opencv相关的包:

pip install opencv-contrib-python 
# 提示以及安装过了,无效

安装此软件包,它将在opencv中启用ffmpeg。


2.2 尝试2

使用视频文件的绝对路径,无效

cap = cv2.VideoCapture("C:/investigate/led_digit_MoNi/video/2.avi")

2.3 尝试3

重新安装opencv,配置ffmpeg。首先需要检查,opencv中的ffmpeg配置是否正确

import cv2
print(cv2.getBuildInformation())

会输出很多opencv与系统相关的配置信息,

> General configuration for OpenCV 4.5.2 =====================================
  Version control:               4.5.2
  Platform:
    Timestamp:                   2021-05-07T08:28:36Z
    Host:                        Windows 10.0.17763 AMD64
    CMake:                       3.18.4
    CMake generator:             Visual Studio 14 2015 Win64
    CMake build tool:            MSBuild.exe
    MSVC:                        1900
    Configuration:               Debug Release
> Video I/O:
    DC1394:                      NO
    FFMPEG:                      YES (prebuilt binaries)
      avcodec:                   YES (58.91.100)
      avformat:                  YES (58.45.100)
      avutil:                    YES (56.51.100)
      swscale:                   YES (5.7.100)
      avresample:                YES (4.0.0)
    GStreamer:                   NO
    DirectShow:                  YES
    Media Foundation:            YES
      DXVA:                      YES

可以看到,其实是支持了ffmpeg的


参考:

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐