当前位置: 首页 > news >正文

使用yolov10模型检测视频中出现的行人,并保存为图片

一、使用yolov10模型检测视频中出现的行人,并保存为图片,detect_person.py代码如下:

from ultralytics import YOLOv10
import glob
import os
import cv2
import argparsedef detect_person(videoPath, savePath):if not os.path.exists(savePath):os.mkdir(savePath)# YOLOV10模型路径modelpath = r'q:\yolov10-main\weights\yolov10m.pt'print("------------------",videoPath,savePath)model = YOLOv10(modelpath)timeF = 0image_count = 0# filenames = glob.glob(os.path.join(videoPath, '*.avi'))# 遍历视频文件夹for root, dirs, files in os.walk(videoPath):print("======",root)print("++++++",dirs)print("------",files,len(files))# 遍历视频文件for filename in files:# if(not filename.endswith(".avi")):#     continueif(filename.split('.')[-1] not in ['avi','mp4']):continueimg = 1videofile = os.path.join(root, filename)video = cv2.VideoCapture(videofile)frames = int(video.get(cv2.CAP_PROP_FRAME_COUNT))# 遍历视频每一帧for _ in range(frames):ret, frame = video.read()timeF += 1if ret:results = model.predict(frame)[0]personcount = 0for box in results.boxes:if box.cls == 0 and box.conf > 0.5:personcount += 1# 图片中出现大于2人,且间隔15帧,保存图片if personcount >= 2 and timeF > 15 :cv2.imwrite(os.path.join(savePath, filename.split('\\')[-1][:-4] + '_' + str(img) + '.jpg'),frame)if image_count % 100 == 0:print("image_count : ",image_count)timeF = 0img += 1# 释放资源video.release()# 删除视频源文件,不想删除可以注释掉os.remove(videofile)if __name__ == '__main__':parse = argparse.ArgumentParser(description='使用yolov10模型检测视频中出现的行人,并保存为图片')parse.add_argument('--videoDir',required=True,help='视频文件夹')parse.add_argument('--imageDir',required=True,help='保存图片文件夹')args = parse.parse_args()detect_person(args.videoDir, args.imageDir)

二、在终端执行以上代码的命令

python.exe detect_person.py --videoDir Q:\DATAS\adas-data\video-person\20250708 --imageDir Q:\DATAS\adas-data\video-person\images-20250718

http://www.dtcms.com/a/294404.html

相关文章:

  • 电子设计大赛【C语言核心知识点】讲解
  • HF86611_VC1/HF86611Q_VC1:多通道USB HiFi音频解码器固件技术解析
  • 动态路由协议基础
  • MIT6.824 Raft算法Lab2A实验
  • 基于阿里云平台的文章评价模型训练与应用全流程指南
  • CASAIM自动蓝光检测供应商三维测量系统近线检测汽车变速箱尺寸
  • Java SE:类与对象的认识
  • 【kubernetes】-3 pod基础和yaml文件
  • 记录一本设计模式的书
  • vue3与ue5通信-工具类
  • [C/C++内存安全]_[中级]_[安全处理字符串]
  • ctfshow pwn40
  • 保护板测试仪:守护电池安全的“幕后卫士”
  • 关于SPring基础和Vue的学习
  • Docker 容器中的 HEAD 请求缺失 header?从 Content-MD5 缺失聊起
  • 超声原始数据重构成B扫成像的MATLAB实现
  • 【AI News | 20250722】每日AI进展
  • now能减少mysql的压力吗
  • 【Android】用 ViewPager2 + Fragment + TabLayout 实现标签页切换
  • linux性能调整和故障排查
  • LeetCode热题100--24. 两两交换链表中的节点--中等
  • Linux文件——Ext2文件系统(3)_软硬链接
  • Ubuntu 1804 编译ffmpeg qsv MediaSDK libva 遇到的问题记录
  • #Linux内存管理# 详细介绍madvise函数的工作原理
  • Elasticsearch(ES)安装
  • 分布式电商系统:缓存策略、负载均衡与容灾方案
  • 解决 Electron 中 window.open 打开新窗口的各种“坑”
  • Python 程序设计讲义(6):Python 的基本用法——运算符与表达式
  • API 汇总:ONLYOFFICE 文档最近更新
  • 背包DP之0/1背包