news 2026/5/27 16:46:08

每秒钟提取视频25帧

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
每秒钟提取视频25帧
import cv2 import os from pathlib import Path def extract_frames(video_path, output_dir=None, frames_per_second=25): """ 从视频中提取帧图像 Parameters: video_path (str): 视频文件路径 output_dir (str): 输出目录,默认为视频同名文件夹 frames_per_second (int): 每秒提取的帧数 """ # 创建输出目录 if output_dir is None: video_name = Path(video_path).stem output_dir = f"E:\BaiduNetdiskDownload\\{video_name}_frames" os.makedirs(output_dir, exist_ok=True) # 打开视频文件 cap = cv2.VideoCapture(video_path) if not cap.isOpened(): print(f"无法打开视频文件: {video_path}") return # 获取视频基本信息 fps = cap.get(cv2.CAP_PROP_FPS) total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) duration = total_frames / fps print(f"视频信息:") print(f" 路径: {video_path}") print(f" FPS: {fps}") print(f" 总帧数: {total_frames}") print(f" 时长: {duration:.2f} 秒") print(f" 每秒提取帧数: {frames_per_second}") # 计算提取间隔 frame_interval = fps / frames_per_second print(f" 提取间隔: 每 {frame_interval} 帧提取一次") frame_count = 0 saved_count = 0 while True: ret, frame = cap.read() if not ret: break # 更精确的帧采样判断 expected_frame_number = round(saved_count * (fps / frames_per_second)) if frame_count >= expected_frame_number: # 生成文件名 timestamp = frame_count / fps filename = f"frame_{saved_count:06d}_{timestamp:.3f}s.jpg" filepath = os.path.join(output_dir, filename) # 保存高质量JPEG图像 cv2.imwrite(filepath, frame, [cv2.IMWRITE_JPEG_QUALITY, 95]) saved_count += 1 # 显示进度 progress = (frame_count / total_frames) * 100 print(f"\r处理进度: {progress:.1f}% ({saved_count} 帧已保存)", end='') frame_count += 1 # 释放资源 cap.release() print(f"\n完成! 共提取 {saved_count} 帧图像到目录: {output_dir}") if __name__ == "__main__": # 设置视频路径 video_path = r"E:\BaiduNetdiskDownload\mmexport1765869882377.mp4" # 提取帧,每秒25帧 extract_frames(video_path, frames_per_second=25)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/23 8:49:47

探索配电网仿真世界:基于Simulink的IEEE33节点模型

标准IEEE33节点配电网, simulink建模,有参考文献,有数据来源。 可输出节点电压、电流数据,适用于潮流计算,在此基础上可实现风光并网研究。 在电力系统分析领域,配电网的运行特性研究一直是最受关注的热点问…

作者头像 李华
网站建设 2026/5/25 10:04:02

为什么90%的智能Agent日志在Docker中丢失?真相终于被揭开

第一章:智能 Agent 的 Docker 日志收集在现代微服务架构中,智能 Agent 被广泛用于监控、采集和预处理运行时数据。其中,Docker 容器的日志收集是保障系统可观测性的关键环节。智能 Agent 通常以 Sidecar 或 DaemonSet 模式部署,负…

作者头像 李华
网站建设 2026/5/1 9:51:30

揭秘Docker容器化LangGraph多Agent通信:5个必须掌握的核心技巧

第一章:揭秘Docker容器化LangGraph多Agent通信的核心价值在现代分布式AI系统中,LangGraph通过图结构建模Agent之间的复杂交互逻辑,而Docker容器化技术为多Agent系统的部署、隔离与扩展提供了坚实基础。将二者结合,不仅能实现Agent…

作者头像 李华
网站建设 2026/5/24 23:30:54

成为AI产品经理:程序员不可错过的AI时代红利

文章指出ChatGPT的爆火引发AI发展热潮,产品经理需了解AI底层技术才能设计出合格产品。AI产品经理需要知道模型搭建、应用技术并与业务场景结合。文章推出AI产品经理训练营,适合有一定产品经验想转行AI产品经理的人,每周日晚上上课&#xff0c…

作者头像 李华
网站建设 2026/5/26 16:41:50

为什么你的Agent服务无法自动扩展?深度解析Docker Compose配置盲区

第一章:为什么你的Agent服务无法自动扩展?在构建现代分布式系统时,Agent 服务常被用于采集日志、监控指标或执行远程指令。尽管容器化和编排平台(如 Kubernetes)已原生支持自动扩展,许多团队仍发现其 Agent…

作者头像 李华
网站建设 2026/5/24 15:46:56

千匠网络大宗钢铁产业交易系统:赋能钢铁产业数字化交易新未来

钢铁行业数字化转型的必然选择在传统钢铁贸易格局中,信息不对称、交易链条冗长、履约风险高企、融资渠道单一等问题长期制约着行业健康发展。随着产业互联网时代的到来,打造一个高效、安全、透明的大宗钢铁产业交易系统已成为推动产业升级的迫切需求。千…

作者头像 李华