python视频事物分析

devtools/2024/11/15 4:33:44/

使用 OpenCV 和 Hugging Face 的transformers库中的预视视觉模型来分析视频内容

依赖库

python">pip install opencv-python transformers torch

代码

python">import cv2
import torch
from transformers import pipeline# 加载预训练的目标检测模型
detector = pipeline("object-detection", model="facebook/detr-resnet-50")def analyze_video(video_path):# 打开视频文件cap = cv2.VideoCapture(video_path)frame_count = 0while cap.isOpened():ret, frame = cap.read()if not ret:break  # 视频读取完成# 每隔一定帧数分析一次if frame_count % 30 == 0:  # 每 30 帧分析一次,可以根据需要调整# 将帧转换为RGB格式rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)# 使用模型进行目标检测results = detector(rgb_frame)# 输出检测结果print(f"Frame {frame_count}:")for obj in results:label = obj['label']score = obj['score']box = obj['box']print(f"Detected: {label}, Confidence: {score:.2f}")# 在帧上绘制检测结果x1, y1, x2, y2 = int(box['xmin']), int(box['ymin']), int(box['xmax']), int(box['ymax'])cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)cv2.putText(frame, f"{label} ({score:.2f})", (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)# 显示带有检测结果的帧cv2.imshow("Video Analysis", frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakframe_count += 1# 释放视频捕获对象并关闭窗口cap.release()cv2.destroyAllWindows()# 示例用法
video_path = 'path_to_your_video.mp4'  # 替换为实际视频路径
analyze_video(video_path)
  • 使用OpenCV逐帧读取视频,把每第30帧作为分析帧。
  • 通过拥抱人脸的detr-resnet-50模型检测视频帧中的物体,模型会输出每个物体的类别、置信度和位置。
  • 将检测结果以校正框和标签形态差在视频帧上,然后查看识别效果。
  • 每个分析帧的检测结果都会在控制台输出,同时在窗口中显示。

http://www.ppmy.cn/devtools/133289.html

相关文章

什么是Stream流?

在Java中,Stream流是一种用于处理集合数据的抽象概念,它可以高效、简洁地对集合进行一系列的操作,比如过滤、排序、映射等。Stream API 是在 Java 8 中引入的,属于 Java 的新特性之一。 Stream流的特点 惰性求值:Str…

【项目开发】RESTful架构及RESTful API设计指南

未经许可,不得转载。 文章目录 前言起源名词解释资源(Resources)表现层(Representation)状态转化(State Transfer)RESTful架构的基本特征REST API设计指南一、协议二、域名三、版本(Versioning)四、路径(Endpoint)五、HTTP动词六、过滤信息(Filtering)七、状态码(…

[SWPUCTF 2022 新生赛]Power! 反序列化详细题解

知识点: PHP反序列化(执行顺序) 构造POP链 代码审计 题目主页: 输入框可以输入内容,习惯性先查看一下页面的源代码,收集信息 发现源码中有提示参数source 先不急,再看一下其他信息 是apache服务器,php版本为7.4.30 url传参 ?sourceindex.php 回显了index.php的源码 …

ESLint 使用教程(一):从零配置 ESLint

前言 在现代前端开发中,代码质量和风格一致性是团队合作和项目维护的重要因素。而 ESLint 作为一款强大的 JavaScript 静态代码分析工具,能够帮助开发者发现和修复代码中的潜在问题。本文将详细介绍 ESLint 的常用规则配置,并结合实际应用场…

ubuntu下aarch64-linux-gnu(交叉编译) gdb/gdbserver(二)

ubuntu下aarch64-linux-gnu(交叉编译) gdb/gdbserver(二) 本教程作为gdb/gdbserver编译安装教程的一个补充,教会大家如何使用gdb/gdbserver进行远程调试。 如上图所示,我们需要将编译后的gdbserver上传至目标设备,其上…

7 软件维护

软件维护 1、软件维护概念和分类1.1 软件维护概念1.1 软件维护分类完善性维护纠错性维护适应性维护预防性维护 2、软件维护注意事项3、软件维护技术3.1 程序理解3.2 软件再工程3.3 软件逆向工程 1、软件维护概念和分类 1.1 软件维护概念 IEEE/EIA 12207[ISO/IEC2008]中对软件…

LeetCode35:搜索插入位置

原题地址:. - 力扣(LeetCode) 题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算…

泉州市工业和信息化局关于开展排查运维安全管理系统安全漏洞的通知

文章目录 引言附件1: 受影响版本和修复方案附件2:漏洞排查处置情况反馈表引言 接国家网络与信息安全信息通报中心通报,一款由北京圣博润高新技术股份有限公司研发的运维安全管理系统(俗称堡垒机)存在命令执行漏洞(CNVD-C-2024-781563、NVDB-CNVDB-2024768604)。攻击者可…