Python图像处理——逐帧读取视频文件的方法

方法1:基于cv2

import cv2
import os
import warnings
warnings.filterwarnings("ignore")
cap = cv2.VideoCapture("test/1.mp4")
c = 1
frameRate = 1   # 这里可以修改帧率读取间隔,1就是逐帧读取
path = 'outputs'
os.makedirs(path)
while (True):ret, frame = cap.read()if ret:if (c % frameRate == 0):cv2.imwrite(path + str(c) + '.jpg', frame)  # 图像保存c += 1cv2.waitKey(0)else:break
cap.release()

方法2:基于moviepy

from moviepy.editor import VideoFileClip
import cv2
import os
def extract_audio_and_frames(video_path, output_dir):# 确保输出文件夹存在if not os.path.exists(output_dir):os.makedirs(output_dir)# 读取视频文件video_clip = VideoFileClip(video_path)# 初始化计数器来命名帧frame_count = 0# 提取并保存每一帧for frame in video_clip.iter_frames():frame_image = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)  # 转换颜色格式frame_path = os.path.join(output_dir, f'frame_{frame_count:04d}.jpg')cv2.imwrite(frame_path, frame_image)frame_count += 1# 释放资源video_clip.close()print("Finished extracting audio and frames.")# 使用函数
video_path = '1.mp4'  # 指定视频文件路径
output_dir = 'outputs'  # 指定输出目录
extract_audio_and_frames(video_path, output_dir)

如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!

5a8015ddde1e41418a38e958eb12ecbd.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/661576.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu安装Neo4j

Ubuntu(在线版) 更新软件源 sudo apt-get update 添加Neo4j官方存储库 wget -O - https://debian.neo4j.com/neotechnology.gpg.key | sudo apt-key add - 将地址添加到系统的软件包源列表中 echo deb https://debian.neo4j.com stable latest | su…

飞书API(6):使用 pandas 处理数据并写入 MySQL 数据库

一、引入 上一篇了解了飞书 28 种数据类型通过接口读取到的数据结构,本文开始探讨如何将这些数据写入 MySQL 数据库。这个工作流的起点是从 API 获取到的一个完整的数据,终点是写入 MySQL 数据表,表结构和维格表结构类似。在过程中可以有不同…

Qwen-Audio:推动通用音频理解的统一大规模音频-语言模型(开源)

随着人工智能技术的不断进步,音频语言模型(Audio-Language Models)在人机交互领域变得越来越重要。然而,由于缺乏能够处理多样化音频类型和任务的预训练模型,该领域的进展受到了限制。为了克服这一挑战,研究…

深入浅出DBus-C++:Linux下的高效IPC通信

目录标题 1. DBus简介2. DBus-C的优势3. 安装DBus-C4. 使用DBus-C初始化和连接到DBus定义接口和方法发送和接收信号 5. dbus-cpp 0.9.0 的安装6. 创建一个 DBus 服务7. 客户端的实现8. 编译和运行你的应用9. 瑞芯微(Rockchip)的 Linux 系统通常会自带 db…

[C语言]典型例题:小蚂蚁爬橡皮筋、买汽水问题、导致单词块、菱形打印……

1、小蚂蚁爬橡皮筋问题 假设橡皮筋长4m,小蚂蚁从一端爬向另一端每天爬1m,且每爬了1m,橡皮筋会立马拉伸4m,在理想条件下,小蚂蚁需要爬多少天可以到达橡皮筋的另一端? 不仔细想,我们很可能认为小蚂…

【C#】基础知识

0.参考 C#语言入门详解 1.几种打印hello_world的方式 1.1 console控制台 新建一个console,直接打印: Console.WriteLine("Hello_world");启动一闪而过,在vs调试中选择开始执行不调试(without debug)。 …

基于FPGA的数字信号处理(5)--Signed的本质和作用

前言 Verilog中的signed是一个很多人用不好,或者说不太愿意用的一个语法。因为不熟悉它的机制,所以经常会导致运算结果莫名奇妙地出错。其实了解了signed以后,很多时候用起来还是挺方便的。 signed的使用方法主要有两种,其中一种…

CentOS 环境 JDK 安装

1.jdk下载 (1)官网Java jdk 历史版本 http://www.oracle.com/technetwork/java/javase/archive-139210.html 选择以下x86 64位版本 (2)国内 编程宝库 java jdk镜像 地址: http://www.codebaoku.com/jdk/jdk-index…

# 从浅入深 学习 SpringCloud 微服务架构(七)Hystrix(3)

从浅入深 学习 SpringCloud 微服务架构(七)Hystrix(3) 一、hystrix:通过 Actuator 获取 hystrix 的监控数据 1、Hystrix 的监控平台介绍: 1)Hystrix 除了实现容错功能,Hystrix 还…

RUSLE模型:一种新的土壤侵蚀强度计算方法

随着全球土地资源的日益枯竭和环境污染的加剧,对土壤侵蚀的研究变得愈发重要。土壤侵蚀不仅对农业生产和生态环境造成了严重影响,还直接威胁着人类的生存环境。因此,寻找一种精准可靠的土壤侵蚀强度计算方法具有重要意义。 ​ 近年来&#xf…

企业计算机服务器中了rmallox勒索病毒怎么处理,rmallox勒索病毒处理建议

在网络技术不断发展的时代,网络在企业中的应用广泛,可以为企业带来更多的便利,大大提升了企业的生产效率,但网络作为虚拟世界,在为企业提供便利的同时,也为企业数据安全带来严重威胁。近期,云天…

区块链技术:DAPP开发

随着科技的飞速发展,区块链技术逐渐渗透到各个领域,其中DAPP(去中心化应用)的发展尤为引人注目。作为一种新型的应用程序,DAPP正在重塑未来商业生态,其潜力无可估量。 一、DAPP的定义和特点 DAPP是指基于…