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)每秒钟提取视频25帧
张小明
前端开发工程师
前端开发必备:JavaScript 核心事件详解与实战
在前端开发中,JavaScript 事件是实现页面交互的核心 —— 从点击按钮触发弹窗,到滚动页面加载数据,再到输入框实时校验,几乎所有用户与页面的互动都离不开事件机制。本文将梳理 JavaScript 中最常用的几类事件,结合实战…
为什么你的服务总崩溃?:Docker MCP 网关负载均衡未正确配置的3大隐患
第一章:为什么你的服务总崩溃?——Docker MCP 网关负载均衡配置之殇在微服务架构中,Docker MCP(Microservice Communication Proxy)网关承担着请求分发与流量控制的核心职责。然而,许多开发者发现ÿ…
专利检索漏查1个参数,千万研发卡壳量产线
某新能源设备企业耗时两年、投入1200万研发的储能电池模块,在量产前的检测中被技术团队紧急叫停——核心的“电极涂层厚度控制技术”,与南方一家企业的专利保护范围高度重合。复盘检索记录发现,团队当初只搜了“储能电池 电极涂层”大类&…
自动化测试团队效率提升指南
在数字化转型加速的2025年,软件交付周期持续压缩,自动化测试已成为质量保障的核心环节。然而,许多测试团队正面临脚本维护成本高、环境稳定性差、技术债累积等效率瓶颈。本指南结合行业最佳实践,为测试从业者提供一套从工具链优化…
LobeChat能否通过等保测评?国内合规性达标
LobeChat能否通过等保测评?国内合规性达标 在人工智能加速渗透企业服务的今天,越来越多组织开始部署基于大语言模型(LLM)的智能助手系统。从客服问答到内部知识检索,这类应用正逐步承担起关键业务支持角色。然而&#…
paperzz 降重 / 降 AIGC:从重复率超标到学术合规,高校生论文 “隐形风险” 的解决逻辑
Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿 paperzz - 降重/降AIGChttps://www.paperzz.cc/weight 对高校生来说,论文写作的 “后半程焦虑” 往往藏在两个隐性风险里:一是重复率超标,辛苦写的内容因为 “表述撞车…