我们将分为以下几个步骤完成这个项目:
目录
1. 安装必要的库
2. 加载和显示视频
3. 应用预训练的人物检测模型
4. 在检测到的人物周围绘制边界框
5. 保存和显示结果
总结:
1. 安装必要的库
首先,确保您已安装以下库:
- OpenCV: 用于图像处理和计算机视觉任务
- imutils: 提供一些实用函数,如图像旋转、裁剪等
安装方法如下:
pip install opencv-python
pip install imutils
2. 加载和显示视频
首先,我们需要导入所需的库,并加载一个视频文件。我们将使用OpenCV的VideoCapture
类来加载视频。
import cv2
import imutilsvideo_path = "path/to/your/video.mp4"# 打开视频
cap = cv2.VideoCapturevideo_path)while True:ret, frame = cap.read)if not ret:break# 缩放以提高处理速度frame = imutils.resizeframe, width=600)cv2.imshow"Input Video", frame)if cv2.waitKey1) & 0xFF == ord"q"):breakcap.release)
cv2.destroyAllWindows)
3. 应用预训练的人物检测模型
接下来,我们将使用OpenCV中提供的预训练模型。这里我们使用MobileNet-SSD模型,因为它在速度和准确性之间达到了很好的平衡。
prototxt_path = "path/to/your/MobileNetSSD_deploy.prototxt"
model_path = "path/to/your/MobileNetSSD_deploy.caffemodel"# 加载预训练模型
net = cv2.dnn.readNetFromCaffeprototxt_path, model_path)
4. 在检测到的人物周围绘制边界框
现在,我们将使用预训练的模型来检测视频中的人物,并在检测到的人物周围绘制边界框。
# 设置置信度阈值
confidence_threshold = 0.5while True:ret, frame = cap.read)if not ret:breakframe = imutils.resizeframe, width=600)h, w) = frame.shape[:2]# 将图像转换为blobblob = cv2.dnn.blobFromImageframe, 0.007843, w, h), 127.5)net.setInputblob)detections = net.forward)for i in rangedetections.shape[2]):confidence = detections[0, 0, i, 2]if confidence > confidence_threshold:idx = intdetections[0, 0, i, 1])if idx == 15: # 15 代表人类box = detections[0, 0, i, 3:7] * np.array[w, h, w, h])startX, startY, endX, endY) = box.astype"int")# 在检测到的人物周围绘制边界框cv2.rectangleframe, startX, startY), endX, endY), 0, 255, 0), 2)cv2.imshow"Input Video", frame)if cv2.waitKey1) & 0xFF == ord"q"):break
5. 保存和显示结果
最后,我们将处理后的视频保存到磁盘,并在程序完成后关闭所有窗口。
# 创建 VideoWriter 对象以保存处理后的视频
fourcc = cv2.VideoWriter_fourcc*"mp4v")
out = cv2.VideoWriter"output.mp4", fourcc, 30, w, h))while True:ret, frame = cap.read)if not ret:breakframe = imutils.resizeframe, width=600)h, w) = frame.shape[:2]blob = cv2.dnn.blobFromImageframe, 0.007843, w, h), 127.5)net.setInputblob)detections = net.forward)for i in rangedetections.shape[2]):confidence = detections[0, 0, i, 2]if confidence > confidence_threshold:idx = intdetections[0, 0, i, 1])if idx == 15:box = detections[0, 0, i, 3:7] * np.array[w, h, w, h])startX, startY, endX, endY) = box.astype"int")cv2.rectangleframe, startX, startY), endX, endY), 0, 255, 0), 2)# 将帧写入输出视频out.writeframe)cv2.imshow"Input Video", frame)if cv2.waitKey1) & 0xFF == ord"q"):breakcap.release)
out.release)
cv2.destroyAllWindows)
总结:
现在,您应该已经成功地创建了一个可以识别人物出现并将其锁定的项目。通过运行此代码,您将能够在给定的视频中检测到人物,并在检测到的人物周围绘制边界框。此外,该程序将处理后的视频保存到磁盘,以便您以后查看。
本教程展示了如何使用Python和OpenCV库构建一个简单的人物识别和锁定项目。您可以在此基础上进行扩展,以满足您的特定需求。例如,您可以尝试:
- 使用其他预训练模型,以提高识别准确性或降低计算复杂性。
- 为检测到的人物添加标签,例如显示置信度分数或人物ID。
- 跟踪检测到的人物在视频中的移动轨迹。
- 将此项目扩展为实时人物识别系统,通过摄像头实时监控人物出现。
查看全文
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/2212751.html
如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!
相关文章:
用Python和OpenCV库实现识别人物出现并锁定
我们将分为以下几个步骤完成这个项目:
目录
1. 安装必要的库
2. 加载和显示视频
3. 应用预训练的人物检测模型
4. 在检测到的人物周围绘制边界框
5. 保存和显示结果
总结: 1. 安装必要的库
首先,确保您已安装以下库:
Ope……
docker搭建elk+filebeat
0. 架构 如果后续日志数据海量也可以加上缓存redis或者消息队列进行升级 前言:此处如果使用docker进行学习的可以按照文章配置 如果是生产环境建议先自定义一个docker网络,来使elasticsearch和logstash的ip地址固定,不然的话docker重启后可能会导致ip变动出现的问题,然后在dock……
MyBatis 动态SQL之<choose><when><otherwise>标签-
简介
MyBatis 中动态语句 choose-when-otherwise 类似于 Java 中的 switch-case-default 语句。由于 MyBatis 并没有为 if 提供对应的 else 标签,如果想要达到…… 的效果,可以借助 、、 来实现。
语法
<choose><when test"判断条件1&q……
算法竞赛进阶指南0x25 广搜
算法竞赛进阶指南0x25 广搜…
网络特征之PCA可视化-Python实现
前言
PCA也是对网络特征可视化的一种方法,目的是对特征进行降维,然后通过图片的形式来对网络的特征提供一种解释。 所以,本博客提供一个将网络特征进行PCA的可视化的代码,其原理为将C通道的特征降维到3通道,即图片的R……
c语言进阶学习笔记——程序环境和预处理
目录程序的翻译环境和执行环境详解编译链接翻译环境运行环境预处理详解预定义符号#define#define 定义标识符#define 定义宏#define 替换规则#和##带副作用的宏参数宏和函数宏和函数的对比命名约定#undef命令行定义条件编译文件包含头文件被包含的方式嵌套文件包含程序的翻译环……
随想代码录【数组篇】—–>二分查找、移除数组
文章目录二分查找二分易错点循环不变量重要)左闭右闭左闭右开总结移除数组暴力解法双指针二分查找 题目链接LeetCode704. 二分查找
二分易错点
while循环中,循环条件是left < right还是left < rightleft每次更新是left mid 1还是left mid, right每次更新……
acm–最小公倍数(HDU 1108)
HDU 1108 最小公倍数Gcd 数论 HDU 1108 最小公倍数(Gcd 数论)
#include<stdio.h>
int Gcdint a, int b){return b 0? a: Gcdb, a%b);
}
int main){int x,y;whilescanf"%d%d",&x,&y)!EOF) printf"%d\n",x*y/G……
acm–错排公式(HDU 1465)
acmHDU 1465错排公式问题引入递推法推导错排公式用容斥原理排列组合推出错排公式简化公式 acm–HDU 1465
话不多说,来代码
#include<stdio.h>
long long Dint n)
{if n 1)return 0;if n 2)return 1;return n – 1)*Dn – 1)Dn – 2));
}
int main)
……
快速幂取模(转载+自己理解)
快速幂取模详解很详细的快速幂算法理解 快速幂取模详解
本人新手,在此谢谢本文引用的《快速幂取模算法》作者 夜せ︱深 万分感谢。
很详细的快速幂算法 快速幂取模,简单的说,就是快速的求一个幂式的模余)。在程序设计过程中,经……
【Java开发】设计模式 12:解释器模式
1 解释器模式介绍
解释器模式是一种行为型设计模式,它提供了一种方法来解释语言、表达式或符号。
在该模式中,定义了一个表达式接口,并实现了对应的表达式类,这些类可以解释不同的符号组成的表达式,从而实现对语言的……
反序列化渗透与攻防五)之shiro反序列化漏洞
Shiro反序列化漏洞
Shiro介绍
Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性
Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默……
vue2+vue3
vue2vue3尚硅谷vue2vue2 课程简介【02:24】vue2 Vue简介【17:59】vue2 Vue官网使用指南【14:07】vue2 搭建Vue开发环境【13:54】vue2 Hello小案例【22:25】了解: 不常用常用:id 更常用 简单class差值总结vue 实例vue 模板 : 先 取 ࿰……
【hello Linux】环境变量
目录 1. 环境变量的概念 2. 常见的环境变量 3. 查看环境变量 4. 和环境变量相关的命令 5. 环境变量的组织方式 6. 通过代码获取环境变量 7. 通过系统调用获取环境变量 Linux🌷 在开始今天的内容之前,先来看一幅图片吧! 不知道你们是否和我一……
【Linux基础】常用命令整理
ls命令
-a选项,可以展示隐藏的文件和文件夹-l选项,以列表形式展示内容-h,需要和-l搭配使用,可以展示文件的大小单位ls -lah等同于la -a -l -h
cd命令(change directory)
语法:cd [Linux路径]……
客快物流大数据项目(一百一十二):初识Spring Cloud
文章目录
初识Spring Cloud
一、Spring Cloud简介
二、SpringCloud 基础架构图…
C和C++中的struct有什么区别
区别一: C语言中: Struct是用户自定义数据类型(UDT)。 C语言中: Struct是抽象数据类型(ADT),支持成员函数的定义。
区别二:
C中的struct是没有权限设置的,……
docker的数据卷详解
数据卷 数据卷是宿主机中的一个目录或文件,当容器目录和数据卷目录绑定后,对方修改会立即同步
一个数据卷可以同时被多个容器同时挂载,一个容器也可以被挂载多个数据卷
数据卷作用:容器数据持久化 /外部机器和容器间接通信 /容器……
13、Qt生成dll-QLibrary方式使用
Qt创建dll,使用QLibrary类方式调用dll
一、创建项目
1、新建项目->其他项目->Empty qmake Project->Choose 2、输入项目名,选择项目位置,下一步 3、选择MinGW,下一步 4、完成 5、.pro中添加TEMPLATE subdirsÿ……
基于mapreduce 的 minHash 矩阵压缩
Minhash作用: 对大矩阵进行降维处理,在进行计算俩个用户之间的相似度。
比如: 俩个用户手机下载的APP的相似度,在一个矩阵中会有很多很多的用户要比较没俩个用户之间的相似度是一个很大的计算任务 如果首先对这个矩阵降维处理&am……
编程日记2023/4/16 14:50:37