python opencv 读取本地视频文件 修改ffmpeg的方法

下面是详细讲解“python opencv 读取本地视频文件 修改ffmpeg的方法”的完整攻略:

一、前置条件

在进行本文讲解前,请确保你已经安装好了 Python 和 OpenCV,以及正确配置了环境变量。

二、读取本地视频文件

使用 Python 调用 OpenCV 读取本地视频文件,可以采用以下代码:

import cv2

cap = cv2.VideoCapture('test.mp4') # test.mp4 是你要读取的视频文件名称
while(cap.isOpened()):
    ret, frame = cap.read()
    if ret:
        cv2.imshow('frame',frame)
        if cv2.waitKey(25) & 0xFF == ord('q'): # 弹出的视频窗口可点击 q 键关闭
            break
    else:
        break

cap.release()
cv2.destroyAllWindows()

上述代码会读取 test.mp4 视频文件,并且将每一帧图像在一个 OpenCV 窗口中展示。注意,弹出窗口不能命名为 win32cv,否则opencv自带的无法打开新的窗口

三、修改FFmpeg的方法

由于 FFmpeg 的格式支持很广泛,但默认情况下,OpenCV 无法读取一些格式的视频文件,比如 .avi、.flv 等。这时可以通过修改 FFmpeg 的方式来支持这些格式的视频文件。

以下是两种示例方法:

1.在 Python 中使用 ffmpeg-python 库

这种方法可以使用 Python 中的 ffmpeg-python 库,通过在 Python 中调用 FFmpeg 命令来读取不支持的视频文件格式。

使用方法如下:

import ffmpeg

input_file = 'test.avi' # 要读取的视频文件路径
output_file = 'test.mp4' # 要输出的新文件路径,需要与读取文件路径不同
ffmpeg.input(input_file).output(output_file).run()

上述代码将会使用 FFmpeg 将 test.avi 视频文件转换为 test.mp4 格式的新文件。

2.手动修改 FFmpeg

当然,你也可以手动修改 FFmpeg 以支持更多格式的视频文件。以下是详细步骤:

  1. 打开 opencv\sources\3rdparty\ffmpeg\ 目录下的 CMakeLists.txt 文件
  2. 将以下内容添加到文件末尾:
set(LIBAVCODEC_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/include/libavcodec")
set(LIBAVFORMAT_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/include/libavformat")
set(LIBAVUTIL_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/include/libavutil")
set(LIBSWSCALE_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/include/libswscale")
  1. 在 Windows 系统下,还需要修改 opencv\sources\3rdparty\ffmpeg\version.h 文件

在文件末尾添加以下内容:

#define AV_CODEC_ID_H264               (CODEC_ID_H264)
#define AV_CODEC_ID_MPEG4              (CODEC_ID_MPEG4)

然后保存并关闭文件。

  1. 打开 opencv\sources\3rdparty\ffmpeg\common.mak 文件,找到以下内容:
DEMDEC_LIBS = $(call map_deps,$(4),$(5),$(D)/libavcodec/libavcodec.a,$(D)/libavutil/libavutil.a) $(EXTRALIBS)

将其修改为:

DEMDEC_LIBS = $(call map_deps,$(4),$(5),$(D)/libavcodec/libavcodec.a,$(D)/libavformat/libavformat.a,$(D)/libavutil/libavutil.a,$(D)/libswscale/libswscale.a)  $(EXTRALIBS)
  1. 最后使用 CMake 重新编译 OpenCV,即可使用修改后的 FFmpeg。

四、总结

以上就是关于“python opencv 读取本地视频文件 修改ffmpeg的方法”的完整攻略,希望对你有所帮助。如有疑问,欢迎在评论区留言。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python opencv 读取本地视频文件 修改ffmpeg的方法 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • django ManyToManyField多对多关系的实例详解

    Django ManyToManyField 多对多关系的实例详解 在Django中,很多时候需要处理多对多的关系,对于这种情况,Django提供了ManyToManyField来实现多对多的关系。本篇攻略将详细讲解ManyToManyField的使用方法和示例。 ManyToManyField是什么? ManyToManyField是Django中的一个模…

    人工智能概论 2023年5月25日
    00
  • 遭遇密码丢失 教你如何进行破解

    遭遇密码丢失 教你如何进行破解的攻略 引言 在今天的网络世界中,我们经常需要使用各种账户,比如邮箱、社交媒体和各种网站。这些账户通常都需要设置密码,但是有时候我们会忘记自己的密码或者账户被盗,这时候就需要找回密码或者进行破解。因此,本文将简要介绍密码破解的方法。 什么是密码破解? 密码破解是指通过对某个加密的密码进行技术性解除加密方式,以获取被保护信息的行为…

    人工智能概览 2023年5月25日
    00
  • PHP下 Mongodb 连接远程数据库的实例代码

    下面是详细讲解“PHP下 Mongodb 连接远程数据库的实例代码”的完整攻略。 确认环境 在开始编写代码之前,我们需要确认以下环境是否已经准备好了: PHP >= 5.4.0 mongodb 扩展 如果你的环境没有准备好以上要求,可以参考以下步骤进行安装: 安装 PHP 以 Ubuntu 16.04 为例,我们可以使用以下命令安装 PHP: sudo…

    人工智能概论 2023年5月25日
    00
  • 基于ChatGPT使用AI实现自然对话的原理分析

    ChatGPT是什么? ChatGPT是一种基于语言模型(Language Model,LM)的对话生成模型。原本是由OpenAI团队领导人Sam Altman在Twitter上发布的一份语言模型,后来被加以改进为面向对话的ChatGPT模型。目前,该模型的最新版本是GPT-3,它在自然语言处理(NLP)领域的表现极为出色。 ChatGPT如何实现自然对话?…

    人工智能概论 2023年5月25日
    00
  • 通过python实现windows桌面截图代码实例

    下面给出通过Python实现Windows桌面截图的完整攻略: 1. 安装必要的库 在开始编写代码之前,我们需要先安装一些必要的Python库,其中pyscreenshot库是用于实现截屏功能的,可以使用以下命令进行安装: pip install pyscreenshot 2. 编写代码 接下来,我们编写Python代码来实现桌面截图功能。代码如下所示: i…

    人工智能概论 2023年5月25日
    00
  • Android实现扫一扫识别数字功能

    下面是针对“Android实现扫一扫识别数字功能”的完整攻略。 步骤一:添加ZXing库 下载并导入ZXing库。 在build.gradle文件中添加ZXing依赖 dependencies { implementation ‘com.google.zxing:core:3.3.3’ } 步骤二:添加扫码识别逻辑 在AndroidManifest.xml中…

    人工智能概论 2023年5月25日
    00
  • 解决django FileFIELD的编码问题

    下面是我总结的“解决django FileFIELD的编码问题”攻略,希望对您有所帮助。 1. 问题描述 在使用 Django 框架开发Web应用时,我们经常会遇到使用 FileField 类型字段时出现的编码问题:在数据上传之后,如果文件名或路径中含有非英文字符(如中文、日文等),Web应用会出现各种错误、异常以及乱码现象。这是由于 Django 默认使用…

    人工智能概览 2023年5月25日
    00
  • pytorch实现onehot编码转为普通label标签

    首先,需要明确的是,在机器学习中,常用的标签表示方法有两种,一种是onehot编码,另一种是普通的标签,也称为分类标签。在训练模型时,我们会将数据的标签转为模型能够识别的形式,而pytorch作为一款强大的深度学习框架,自然不会缺少对标签进行转换的功能。 下面是实现“pytorch实现onehot编码转为普通label标签”的完整攻略: 1.加载数据集并进行…

    人工智能概论 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部