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

【Opencv项目实战】目标检测:自动检测出现的所有动态目标

文章目录

  • 一、项目思路
  • 二、算法详解
    • 2.1、计算两个数组或数组与标量之间的每个元素的绝对差。
    • 2.2、轮廓检测 + 绘制物体轮廓 + 绘制矩阵轮廓
    • 2.3、连续窗口显示
    • 2.4、读取视频,显示视频,保存视频
  • 三、项目实战:实时动态目标检测

实时动态目标检测

一、项目思路

1、获取视频、读取帧图像
2、计算连续两张图像的像素绝对差获取动态目标
3、图像预处理:灰度图、高斯模糊、二值化、膨胀
4、轮廓检测、绘制矩阵轮廓、绘制物体轮廓
5、分别实时显示矩阵轮廓、物体轮廓

python进阶——人工智能实时目标跟踪

二、算法详解

2.1、计算两个数组或数组与标量之间的每个元素的绝对差。

函数说明:cv2.absdiff(src1, src2)
输入参数:src1:第一个输入数组或标量src2:第二个输入数组或标量

2.2、轮廓检测 + 绘制物体轮廓 + 绘制矩阵轮廓

######################################################################
# (1)轮廓检测:contours, hierarchy = cv2.findContours(img, mode, method)
# 输入参数      mode: 轮廓检索模式
#                   (1)RETR_EXTERNAL:  只检索最外面的轮廓;
#                   (2)RETR_LIST:      检索所有的轮廓,但检测的轮廓不建立等级关系,将其保存到一条链表当中,
#                   (3)RETR_CCOMP:     检索所有的轮廓,并建立两个等级的轮廓。顶层是各部分的外部边界,内层是的边界信息;
#                   (4)RETR_TREE:      检索所有的轮廓,并建立一个等级树结构的轮廓;(最常用)
#               method: 轮廓逼近方法
#                   (1)CHAIN_APPROX_NONE:      存储所有的轮廓点,相邻的两个点的像素位置差不超过1。               例如:矩阵的四条边。(最常用)
#                   (2)CHAIN_APPROX_SIMPLE:     压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标。   例如:矩形的4个轮廓点。
# 输出参数      contours:所有的轮廓
#               hierarchy:每条轮廓对应的属性
# 备注0:轮廓就是将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。
# 备注1:函数输入图像是二值图,即黑白的(不是灰度图)。所以读取的图像要先转成灰度的,再转成二值图。
# 备注2:函数在opencv2只返回两个值:contours, hierarchy。
# 备注3:函数在opencv3会返回三个值:img, countours, hierarchy
######################################################################
# (2)绘制轮廓:v2.drawContours(image, contours, contourIdx, color, thickness) ———— (在图像上)画出图像的轮廓
# 输入参数        image:              需要绘制轮廓的目标图像,注意会改变原图
#                 contours:           轮廓点,上述函数cv2.findContours()的第一个返回值
#                 contourIdx:         轮廓的索引,表示绘制第几个轮廓。-1表示绘制所有的轮廓
#                 color:              绘制轮廓的颜色(RGB)
#                 thickness:          (可选参数)轮廓线的宽度,-1表示填充
# 备注:图像需要先复制一份copy(), 否则(赋值操作的图像)与原图会随之一起改变。
######################################################################
# (3)绘制矩形边框:cv2.rectangle(img, (x, y), (x+w, y+h), color, thickness)
#       (x, y):         矩形定点
#       (x+w, y+h):     矩形的宽高
#       color:      	 矩形的边框颜色(0, 255, 0)
#       thickness:      矩形边框宽度
######################################################################

2.3、连续窗口显示

# 显示图像:cv2.imshow(window_title, img)
# 输入参数		window_title:		自定义窗口的名字
#     			img:				待显示图像
# 备注1:窗口会自适应图像大小
# 备注2:指定多个窗口名称,可以显示多幅图像
# 备注3:显示多幅图像的时候,若cv2.imshow()指定相同的窗口名,这样后面显示的图像会覆盖前面的图像,从而只产生一个(连续)窗口。

2.4、读取视频,显示视频,保存视频

OpenCV—读取视频,显示视频,保存视频


三、项目实战:实时动态目标检测

在这里插入图片描述

import cv2# (1)参数设置
Pixel_points = 500  # 像素点数(只检测大于该值的目标,小于该值的目标自动忽略)
video_path = r'C:\Users\my\Videos\car.mov'  # 视频存放地址(路径中不能有中文,将导致读取失败。)if __name__ == '__main__':# (2)读取视频cap = cv2.VideoCapture(video_path)      # 读取视频流_, frame1 = cap.read()                  # 读取第一帧_, frame2 = cap.read()                  # 读取第二帧while cap.isOpened():  # 检测视频是否可以打开# (3)图像预处理diff = cv2.absdiff(frame1, frame2)                              # 计算两张图像之间的每个像素的绝对差gray = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY)                   # 灰度图blur = cv2.GaussianBlur(gray, (5, 5), 0)                        # 高斯滤波_, thresh = cv2.threshold(blur, 20, 255, cv2.THRESH_BINARY)     # 二值化mask = cv2.dilate(thresh, None, iterations=3)                   # 膨胀操作contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)  # 轮廓检测# (4)轮廓检测for contour in contours:(x, y, w, h) = cv2.boundingRect(contour)        # 获取矩阵轮廓的宽和高if cv2.contourArea(contour) < Pixel_points:     # 判断检测得到的矩形轮廓,体积是否满足大小设置continuecv2.rectangle(frame1, pt1=(int(x), int(y)), pt2=(int(x) + int(w), int(y) + int(h)), color=(0, 0, 255), thickness=10)      # 绘制矩形轮廓# cv2.drawContours(frame1, contours, -1, (0, 255, 0), 2)															# 绘制物体轮廓# (5)绘图cv2.imshow('frame', frame1)         # 实时显示轮廓图Frame# cv2.imshow('mask', mask)			# 实时显示掩膜图MASKframe1 = frame2                     # 保存当前帧(循环-计算最近的两帧图像的像素差)ret, frame2 = cap.read()            # 读取下一帧(循环-计算最近的两帧图像的像素差)# (6)如果读到的帧数不为空,则继续读取;如果为空,则退出。if frame2 is None:break# (7)使用 waitKey 可以控制视频的播放速度。数值越小,播放速度越快。if cv2.waitKey(50) == ord(' '):  # ord(' '): 按空格结束breakcap.release()            # 释放摄像头cv2.destroyAllWindows()  # 摧毁所有图窗

相关文章:

【Opencv项目实战】目标检测:自动检测出现的所有动态目标

文章目录一、项目思路二、算法详解2.1、计算两个数组或数组与标量之间的每个元素的绝对差。2.2、轮廓检测 绘制物体轮廓 绘制矩阵轮廓2.3、连续窗口显示2.4、读取视频&#xff0c;显示视频&#xff0c;保存视频三、项目实战&#xff1a;实时动态目标检测实时动态目标检测一、…...

活动报名:Tapdata Cloud V3 最新功能全解与核心应用场景演示

作为中国的 “Fivetran/Airbyte”, Tapdata Cloud 自初版公测以来&#xff0c;已累积10,000 注册用户。核心场景包括 Any Source → Any Target 的实时数据库同步、数据入湖入仓&#xff0c;以及通用 ETL 处理等。近期&#xff0c;功能特性全面优化的 Tapdata Cloud V3 也已开放…...

人工智能AI威武,爱也……恨也……

人工智能AI威武&#xff0c;爱也&#xff01;恨也&#xff01;&#xff01;它会创作会代码&#xff0c;从它那儿能仿到更好的思维&#xff1b;多它那里可以学到更好的代码。它聪慧全能&#xff0c;成为一坨人偷懒神器&#xff1b;变成“智者”作弊的“倚天屠龙”&#xff01;&a…...

SpringBoot-基础篇

SpringBoot基础篇 ​ 在基础篇中&#xff0c;我给学习者的定位是先上手&#xff0c;能够使用SpringBoot搭建基于SpringBoot的web项目开发&#xff0c;所以内容设置较少&#xff0c;主要包含如下内容&#xff1a; SpringBoot快速入门SpringBoot基础配置基于SpringBoot整合SSMP…...

Tapdata Connector 实用指南:实时数仓场景之数据实时同步至 ClickHouse

【前言】作为中国的 “Fivetran/Airbyte”, Tapdata 是一个以低延迟数据移动为核心优势构建的现代数据平台&#xff0c;内置 60 数据连接器&#xff0c;拥有稳定的实时采集和传输能力、秒级响应的数据实时计算能力、稳定易用的数据实时服务能力&#xff0c;以及低代码可视化操作…...

刷题专练之数组移除元素

文章目录前言一、移除元素1.题目介绍2.思路&#xff1a;3.代码二、移动零1.题目介绍2.思路3.代码三、删除有序数组中的重复项1.题目介绍2.思想3.代码四、80. 删除有序数组中的重复项 II1.题目介绍2.思路3.代码4.推荐题解前言 我每个刷题篇的题目顺序都是特别安排的&#xff0c;…...

常见激活函数Activation Function的选择

Activation Function激活函数一般会神经网络中隐层和输出层上&#xff0c;其中作用在输出层主要用于适配输出&#xff0c;比如sigmoid函数可用于生成[0,1]之间的概率估计值。而作用于隐层主要用于增加神经网络的非线性&#xff0c;增加了网络的表达能力&#xff0c;本文主要介绍…...

大厂跟进ChatGPT,为什么百度“文心一言”成色最好?【快评】

作者 | 曾响铃 文 | 响铃说 赶ChatGPT热度&#xff0c;百度3月初就要发布与ChatGPT类似的人工智能聊天机器人服务“文心一言”&#xff08;英文名&#xff1a;ERNIE Bot&#xff09;&#xff0c;似乎无法提振资本市场对百度的信心。 2022年第四季度及全年未经审计的财报发布…...

ChatGPT和Web3:人工智能如何帮助您建立和发展您的 Web3 公司

ChatGPT是OpenAI在2022年11月推出的聊天机器人。该机器人建立在OpenAI的GPT-3人工智能家族上&#xff0c;并通过监督学习和强化学习技术进行了优化。 与ChatGPT机器人聊天时&#xff0c;你会感觉自己在与一个懂得一切并以非常教育性的方式回答的朋友交谈。回答在许多知识领域非…...

【人工智能 AI】怎样实施RPA 机器人流程自动化(Robotic Process Automation)?核心技术有哪些?

文章目录 RPA 简介RPA的实施RPA的核心技术1. 自动化测试(1)自动化测试工具(2)自动化测试框架2. 自动化脚本(1)自动化脚本语言(2)自动化脚本框架3. 机器学习(1)机器学习模型(2)机器学习框架(3)自然语言处理(4)图像处理(5)深度学习(6)机器人操作系统RPA核心能…...

基于BP神经网络的性别识别,BP神经网络详细原理,自编码神经网络代码,神经网络案例之18

目标 背影 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数&#xff0c; BP神经网络的传递函数 数据 神经网络参数 基于BP神经网络 性别识别的MATLAB代码 效果图 结果分析 展望 背影 男人体内蛋白质比例大&#xff0c;女生…...

2023年消费电子行业研究报告

第一章 行业概况 消费电子行业是电子信息行业的子行业。消费电子是指围绕着消费者应用而设计的与生活、工作和娱乐息息相关的电子类产品&#xff0c;通常会应用于娱乐、通讯以及文书用途&#xff0c;最终实现消费者自由选择资讯、享受娱乐的目的&#xff0c;主要侧重于个人购买…...

CSDN 编程竞赛三十一期题解

竞赛总览 CSDN 编程竞赛三十一期&#xff1a;比赛详情 (csdn.net) 本次竞赛的最后一道题的描述部分有些问题&#xff08;题目描述与样例不符&#xff09;&#xff0c;另外&#xff0c;测试数据似乎也有点问题&#xff0c;试了多种方式&#xff0c;但最多只能通过10%的测试点。…...

SpringMVC常见面试题(2023最新)

目录前言1.简单介绍下你对springMVC的理解?2.说一说SpringMVC的重要组件及其作用3.SpringMVC的工作原理或流程4.SpringMVC的优点5.SpringMVC常用注解6.SpringMVC和struts2的区别7.怎么实现SpringMVC拦截器8.SpringMvc的控制器是不是单例模式&#xff1f;如果是&#xff0c;有什…...

【正点原子FPGA连载】第十六章DP彩条显示实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第十六章DP彩条显…...

数据结构与算法—链表list

目录 链表 链表类型 链表插入 链表删除 写程序注意点 与数组区别 链表应用 LRU 实现思想 链表 链表&#xff0c;一种提高数据读取性能的技术&#xff0c;在硬件设计、软件开发中有广泛应用。常见CPU缓存&#xff0c;数据库缓存&#xff0c;浏览器缓存等。缓存满时&#…...

自定义View练习题目整理

一、动态音频播放柱形图 1、效果图&#xff1a; 2、步骤 &#xff08;1&#xff09;、新建自定义View类&#xff0c;继承View &#xff08;2&#xff09;、重写onDraw()方法&#xff0c;使用画笔和画布循环画一定数量的柱形 Overrideprotected void onDraw(Canvas canvas) {s…...

LAMP平台部署及应用

LAMP平台部署及应用 &#x1f4d2;博客主页&#xff1a; 微笑的段嘉许博客主页 &#x1f4bb;微信公众号&#xff1a;微笑的段嘉许 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐留言&#x1f4dd; &#x1f4cc;本文由微笑的段嘉许原创&#xff01; &#x1f4c…...

ubuntu20.04安装python3虚拟环境

1.安装pip3 sudo apt install python3-pip2.安装虚拟环境 sudo apt install virtualenv sudo apt install virtualenvwrapper3.修改配置文件设置环境变量 打开.bashrc并编辑 gedit ~/.bashrc在.bashrc文件后面加入下面两行 export WORKON_HOME$HOME/.virtualenvs source …...

VUE3源码分析————rollup打包

文章目录什么是rolluprollup打包和webpack打包的区别rollup打包准备一、安装yarn开始rollup打包一、初始化二、package.json文件配置三、新建并配置打包文件夹四、下载rollup及打包执行文件五、文件大致分布![image.png](https://img-blog.csdnimg.cn/img_convert/66f1a85ff57d…...

Bambu Studio终极实战指南:5大核心技术深度解析与3D打印效率优化方案

Bambu Studio终极实战指南&#xff1a;5大核心技术深度解析与3D打印效率优化方案 【免费下载链接】BambuStudio PC Software for BambuLab and other 3D printers 项目地址: https://gitcode.com/GitHub_Trending/ba/BambuStudio Bambu Studio作为专为BambuLab系列3D打印…...

ChatGLM3-6B企业实操:离线环境下的技术问答机器人部署

ChatGLM3-6B企业实操&#xff1a;离线环境下的技术问答机器人部署 1. 项目概述 在当今企业环境中&#xff0c;数据安全和响应速度是技术问答系统的核心需求。传统的云端AI服务虽然方便&#xff0c;但存在数据泄露风险、网络依赖性强、响应延迟高等问题。特别是对于金融、医疗…...

Pixel Epic动态卷轴效果展示:从空白屏幕到完整研报的实时生成录屏

Pixel Epic动态卷轴效果展示&#xff1a;从空白屏幕到完整研报的实时生成录屏 1. 引言&#xff1a;当科研遇上像素冒险 在传统的研究报告撰写过程中&#xff0c;我们常常面对冰冷的界面和机械化的交互体验。Pixel Epic彻底改变了这一现状&#xff0c;将严肃的学术研究变成了一…...

从播放卡顿到流媒体优化:深入MP4的stbl盒子,理解视频流畅播放的关键

从播放卡顿到流媒体优化&#xff1a;深入MP4的stbl盒子&#xff0c;理解视频流畅播放的关键 当你在深夜调试一个在线视频播放器&#xff0c;发现用户总是抱怨卡顿和拖拽不准时&#xff0c;是否曾思考过问题可能隐藏在MP4文件最核心的stbl盒子中&#xff1f;作为流媒体开发者&am…...

深度解析JiYuTrainer:极域电子教室反控制技术实现与架构设计

深度解析JiYuTrainer&#xff1a;极域电子教室反控制技术实现与架构设计 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer JiYuTrainer是一款专业的极域电子教室反控制软件&#xf…...

美国智能手机搜查法律现状:不确定性与风险并存

生物识别解锁&#xff1a;法律模糊地带的高风险在美国&#xff0c;配置生物识别解锁功能的设备一直面临易受攻击的问题。目前&#xff0c;关于手机搜查的合法权益并不明确。一方面&#xff0c;若手机设置密码锁&#xff0c;被拘留或逮捕时说出密码可能被视为自证其罪&#xff0…...

突破平台限制:WorkshopDL重构Steam创意工坊资源获取体验

突破平台限制&#xff1a;WorkshopDL重构Steam创意工坊资源获取体验 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL WorkshopDL作为一款仅10MB大小的开源工具&#xff0c;通过智…...

激发创意:利用快马平台ai模型辅助设计与优化cmhhc算法

激发创意&#xff1a;利用快马平台AI模型辅助设计与优化CMHHC算法 最近在做一个字符串压缩相关的项目&#xff0c;需要实现一个自定义的压缩算法CMHHC。这个算法的核心思想其实很简单&#xff1a;对于连续出现的相同字符&#xff0c;用该字符加上出现次数来表示。比如"aa…...

革新性PDF可视化标记技术:从原理到实践的全方位解析

革新性PDF可视化标记技术&#xff1a;从原理到实践的全方位解析 【免费下载链接】obsidian-pdf-plus PDF: the most Obsidian-native PDF annotation & viewing tool ever. Comes with optional Vim keybindings. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-…...

SGMICRO圣邦微 SGM8740YC5G/TR SC70-5 比较器

特性 快速&#xff0c;45纳秒传播延迟(10毫伏过驱动)低功耗:在Vs3V时为155pA(典型值) 宽电源电压范围:2.7V至5.5V优化适用于3V和5V应用轨到轨输入电压范围低偏置电压:0.9mV(典型值)内部迟滞以实现干净开关 输出摆幅:在4mA输出电流下&#xff0c;从轨距内.200mV范围内 与CMOS/TT…...