颜色和移动物体识别系统

article/2025/9/11 18:23:32

颜色和移动物体识别系统
1.开发工具
Python版本:Anaconda 的python环境3.8版本
开发软件:Pycharm社区版
识别模型:深度学习模型,普通学习模型
相关模块:opencv-python=3.4.8.29模块
2.环境搭建
安装Anaconda并将路径添加到环境变量,安装Pycharm并将路径添加到环境变量,使用pip安装需要的相关模块即可。
3.程序流程
一、颜色识别系统
1)打开pycharm,创建一个文件夹和一个.py文件
在这里插入图片描述

2)导入两个库,cv2和numpy库
在这里插入图片描述

3)设置绿色和红色的高低阈值
在这里插入图片描述

4)判断是否正常打开视频
在这里插入图片描述

5)读取每一帧与当读取帧正常时
在这里插入图片描述

6)将图片转为灰色
在这里插入图片描述

7)根据颜色范围筛选红色和绿色
在这里插入图片描述

8)中值滤波处理
在这里插入图片描述

9)对两种颜色进行处理,寻找绿色和红色范围
在这里插入图片描述

10)在绿色区域画正方形并显示“Green”
在这里插入图片描述

11)在红色区域画正方形并显示“Red”
在这里插入图片描述

12)显示每一帧,等待播放,按“q”中断
在这里插入图片描述

13)如果视频播放完,自动跳出循环,窗口关闭
在这里插入图片描述

14)释放视频以及销毁所有创建的窗口
在这里插入图片描述

15)运行时示例截图
在这里插入图片描述
源码展示

import numpy as np  # 导入numpy库
import cv2  # 导入opencv-python库即cv2库lower_green = np.array([35, 110, 106])  # 绿色范围低阈值
upper_green = np.array([77, 255, 255])  # 绿色范围高阈值
lower_red = np.array([0, 127, 128])  # 红色范围低阈值
upper_red = np.array([10, 255, 255])  # 红色范围高阈值
# 需要更多颜色,可以去百度一下HSV阈值!
cap = cv2.VideoCapture("2.mp4")  # 打开视频文件
num = 0
while (cap.isOpened()):  # 是否正常打开视频ret, frame = cap.read()  # 读取每一帧if ret == True:  # 判断读取帧正确时hsv_img = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)  # 将图片转为灰色以便后面处理mask_green = cv2.inRange(hsv_img, lower_green, upper_green)  # 根据颜色范围筛选绿色mask_red = cv2.inRange(hsv_img, lower_red, upper_red)  # 根据颜色范围筛选红色mask_green = cv2.medianBlur(mask_green, 7)  # 中值滤波mask_red = cv2.medianBlur(mask_red, 7)  # 中值滤波mask = cv2.bitwise_or(mask_green, mask_red)  # 对两种颜色进行处理mask_green, contours, hierarchy = cv2.findContours(mask_green, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)  # 寻找绿色范围mask_red, contours2, hierarchy2 = cv2.findContours(mask_red, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)  # 寻找红色范围for cnt in contours:(x, y, w, h) = cv2.boundingRect(cnt)cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 255), 2)cv2.putText(frame, "Green", (x, y - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2)# 在绿色区域画正方形并显示Greenfor cnt2 in contours2:(x2, y2, w2, h2) = cv2.boundingRect(cnt2)cv2.rectangle(frame, (x2, y2), (x2 + w2, y2 + h2), (0, 255, 255), 2)cv2.putText(frame, "Red", (x2, y2 - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)# 在红色区域画正方形并显示Greencv2.imshow("dection", frame)  # 显示每一帧if cv2.waitKey(20) & 0xFF == ord("q"):  # 类似中断播放的按键,按q跳出循环终止播放breakelse:break
cap.release()  # 释放视频
cv2.destroyAllWindows()  # 将创建的所有的窗口毁灭

二、移动物体识别系统
1)打开pycharm,创建一个文件夹和一个.py文件
在这里插入图片描述

2)导入cv2库,该系统只需要一个cv2库
在这里插入图片描述

3)读取视频的路径
在这里插入图片描述

4)找出视频的长和宽,并且输出
在这里插入图片描述

5)给椭圆形描点并赋值给变量,并给background赋值
在这里插入图片描述

6)判断能否正确读取视频流
在这里插入图片描述

7)读取视频并判断视频是否结束
在这里插入图片描述

8)对帧进行预处理,先转灰度,再进行高斯滤波
在这里插入图片描述

9)将第一帧设置为整个输入的背景
在这里插入图片描述

10)对于每个从背景之后读取的帧都会计算其与背景之间的差异,并得到一个差分图
在这里插入图片描述

11)应用阈值来得到一幅黑白图像,并通过下面代码来膨胀图像,从而对孔和缺陷进行归一化处理
在这里插入图片描述

12)对移动的物体显示矩形框
在这里插入图片描述

13)播放视频并且按“q”退出视频
在这里插入图片描述

14)如果视频播放结束。跳出循环并关闭窗口
在这里插入图片描述

15)释放视频和销毁所有创造的窗口
在这里插入图片描述

16)运行示例截图
在这里插入图片描述
源码展示

import cv2  # 导入opencv-python库即cv2库camera = cv2.VideoCapture("5.mp4")  # 读取视频路径
size = (int(camera.get(cv2.CAP_PROP_FRAME_WIDTH)), int(camera.get(cv2.CAP_PROP_FRAME_HEIGHT)))  # 找出视频的长和宽并赋给变量
print('size:' + repr(size))  # 输出图片的长和宽
es = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (9, 4))  # 以椭圆形描点并赋值给变量
background = None  # 给background赋予初始值None
while (camera.isOpened()):  # 能否正确读取视频流grabbed, frame_lwpCV = camera.read()if grabbed == True:gray_lwpCV = cv2.cvtColor(frame_lwpCV, cv2.COLOR_BGR2GRAY)  # 对帧进行预处理,先转灰度图,再进行高斯滤波。gray_lwpCV = cv2.GaussianBlur(gray_lwpCV, (21, 21),0)  # 用高斯滤波进行模糊处理,进行处理的原因:每个输入的视频都会因自然震动、光照变化或者摄像头本身等原因而产生噪声。对噪声进行平滑是为了避免在运动和跟踪时将其检测出来。# 将第一帧设置为整个输入的背景if background is None:background = gray_lwpCVcontinue# 对于每个从背景之后读取的帧都会计算其与背景之间的差异,并得到一个差分图(different map)。# 还需要应用阈值来得到一幅黑白图像,并通过下面代码来膨胀(dilate)图像,从而对孔(hole)和缺陷(imperfection)进行归一化处理diff = cv2.absdiff(background, gray_lwpCV)diff = cv2.threshold(diff, 148, 255, cv2.THRESH_BINARY)[1]  # 二值化阈值处理diff = cv2.dilate(diff, es, iterations=2)  # 形态学膨胀image, contours, hierarchy = cv2.findContours(diff.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)  # 该函数计算一幅图像中目标的轮廓# 显示矩形框for c in contours:if cv2.contourArea(c) < 15:  # 对于矩形区域,只显示大于给定阈值的轮廓,所以一些微小的变化不会显示。对于光照不变和噪声低的摄像头可不设定轮廓最小尺寸的阈值continue(x, y, w, h) = cv2.boundingRect(c)  # 该函数计算矩形的边界框cv2.rectangle(frame_lwpCV, (x, y), (x + w, y + h), (0, 255, 0), 2)  # 画出有移动物体的矩形cv2.imshow('contours', frame_lwpCV)  # 播放视频key = cv2.waitKey(20) & 0xFF# 按'q'健退出循环if key == ord('q'):breakelse:break
camera.release()  # 释放视频
cv2.destroyAllWindows()  # 将创建的所有的窗口毁灭

http://chatgpt.dhexx.cn/article/XneD5VAw.shtml

相关文章

[Vuforia]二.3D物体识别

之前说过10之后的版本没有3dScan了&#xff0c;所以还是9.8的版本或者之前更早的版本。 3d物体扫描需要先下载扫描的APK进行扫面。 首先要在手机上装一个扫描程序&#xff0c;扫描现实中的三维物体&#xff0c;然后上传高通官网&#xff0c;在下载成UnityPackage类型让Unity能…

K210视觉体验—物体识别

K210视觉体验—物体识别 使用设备ZTFR开发板 人脸识别构造函数导入模型 示例代码基础测试 使用设备 ZTFR开发板 人脸识别 首先简单介绍一下 K210 的 KPU。KPU 是 K210 内部一个神经网络处理器&#xff0c;简单来说就是 KPU 能加载和运行各种现成的 AI 算法模型&#xff0c;实现…

tensorflow 物体识别

tensorflow推出的object detection模块&#xff0c;为我们做物体检测提供了极大的便利&#xff0c;如果还没有安装该模块&#xff0c;可以参照 http://blog.csdn.net/hanshuobest/article/details/79222685 下面的示例演示如何用已训练的模型做物体检测 import numpy as np …

计算机视觉物体识别的过程,计算机视觉之从OpenCV到物体识别(二)

前言:上一章节我们学会了图片、视频以及外设获取帧图片的方式,以及OpenCV 的灰度图片处理。计算机不像人眼可以很轻易地辨别物体,本质是将一张图片转换成灰度图,通过一定的模型训练,使得机器能够从0,1(黑与白)中分辨物体的特征,由局部到整体,图片越复杂,所需的训练程度…

unity c# 触摸屏物体识别桌算法

unity源码地址链接&#xff1a;unityc#触摸屏物体识别桌算法-C#文档类资源-CSDN下载 实操的时候出现算出来的坐标不对&#xff0c;没有时间去找问题&#xff0c;优化了&#xff0c;所以代码仅供参考。 使用的是Lean Touch插件&#xff0c;免费的。 模块由三个点构成&#xf…

如何用AR引擎技术, 5步优雅实现物体识别和跟踪

AR技术让应用实现虚拟世界和现实世界的融合&#xff0c;让开发者的创意和脑洞能够拥有更多炫酷有趣的呈现方式。AR拍照、AR购物、AR教育、AR搜索等丰富应用场景&#xff0c;凭借着AR技术的加持&#xff0c;为用户带来更优质的沉浸式体验&#xff0c;为用户创造更多价值。 例如…

物体识别全流程(Ubuntu16.04)结合ROS

物体识别全流程&#xff08;Ubuntu16.04&#xff09;结合ROS 1.使用labellmg&#xff0c;标记图片&#xff0c;生成xml标签 在此下载labellmg包 下载之后解压到要放置的目录 推荐使用Python3Qt5 打开labellmg包 在当前目录终端下运行如下命令行 sudo apt-get install pyqt5-…

opencv人脸识别以及自定义物体识别系统

目录 一、简介&#xff1a; 二、软硬件应用&#xff1a; 三、模块介绍&#xff1a; &#xff08;一&#xff09;人脸识别&#xff1a; &#xff08;二&#xff09;、自定义物体识别&#xff1a; &#xff08;三&#xff09;、图片展示&#xff1a; &#xff08;四&#x…

opencv物体识别-识别水果

前言 玩一玩用opencv做一些简单的物体识别 1.思路讲解 我们基于简单的opencv的阈值分割&#xff0c;通过这个阈值分割&#xff0c;我们能把我们需要识别的物体在二值图里面变成白色&#xff0c;其余的变成黑色。然后对我们分割出来的物体部分提取轮廓&#xff0c;算出覆盖轮…

物体识别

一、物体识别 图像识别&#xff1a;很重要&#xff0c;是很多算法的基础 图像识别定位&#xff1a;识别出来是猫&#xff0c;且定位出猫的位置 物体检测&#xff1a;每个图像中含有多物体&#xff0c;检测出有几个个体&#xff0c;并框出来位置 图像分割&#xff1a;不仅仅框…

【AI技术】物体识别概述1

【AI技术】物体识别概述1 1、背景2、物体识别3、应用 1、背景 主要针对客户以及初学者概述物体识别。 2、物体识别 物体识别又叫目标识别&#xff0c;物体分类&#xff0c;图像分类&#xff0c;习惯性称为图像分类&#xff0c;即对整张图片进行分类。 物体识别针对的是物体分…

目标检测和物体识别的方法有哪些?如何进行物体定位和分类?

目标检测和物体识别是计算机视觉领域中重要的任务&#xff0c;旨在从图像或视频中自动定位和识别出不同类别的物体。这些任务在许多应用领域中具有广泛的应用&#xff0c;如自动驾驶、视频监控、人机交互等。本文将介绍目标检测和物体识别的方法以及如何进行物体定位和分类。 一…

小程序 跳转 公众号 文章

1.通过组件 web-view https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html <web-view src"https://mp.weixin.qq.com/s/Cz4x4QpvF_Pozn7xjYOVyw"></web-view>2.如果是关联好小程序的公众号 1.如果是 左图文章 都是 https://m…

微信小程序跳转公众号h5页面

小程序提供了web- view组件进行用来内嵌网页 根据限制说明准备域名即可&#xff0c;开发阶断可以使用http的域名&#xff0c;在开发者工具中勾选不验证https证书即可&#xff0c;发布上线时必须使用https的域名。 同时需要小程序后台配置业务域名。

微信小程序跳转微信公众号

1 webview 嵌套 微信公众号的页面 然后 文章里 添加 公众号二维码 然后引导用户长按识别公众号 2 公众号有关注的页面 路径 需要自己找 我记得是替换什么officeid啥的 百度即可 3 利用<official-account bindload"lookSuccess" binderror"lookFai…

微信小程序跳转公众号

长按识别跳转 步骤&#xff1a; 新建一个页面使用web-view组件的src链接到公众号编辑好的一篇带有公众号的二维码的文章 微信规则只有小程序关联的公众号里的文章可以长按识别二维码 <template><view><!--微信规则只有小程序关联的公众号里的文章可以长按识别…

小程序直接跳转公众号的必要条件记录

1、小程序必须关联公众号主体&#xff0c;可以从图1查看是否已被关联&#xff0c;如果没有被关联&#xff0c;则可以去图2进行关联 图1&#xff1a; 图2&#xff1a;登录微信公众平台&#xff0c;进入图片广告-小程序管理&#xff0c;进行关联 2.小程序不能直接打开公众号首…

小程序跳转公众号文章

这是首页的代码 <image class"seedingBannar" data-id"{{item.id}}" bindtap"goTweet" src"{{resourceUrlitem.iconPath}}"></image>// 跳转到推文页面goTweet: function (e) {console.log(e.currentTarget.dataset.id)wx…

uni-app微信小程序跳转公众号;微信小程序打开公众号;微信小程序识别二维码添加好友;微信小程序通过公众号添加好友;小程序里识别企业微信二维码点击联系人名片无反应?

需求&#xff1a; 在微信小程序页面中&#xff0c;长按识别图片二维码&#xff0c;识别出联系人后&#xff0c;点击添加好友&#xff1b; 问题&#xff1a;微信官方社区说是小程序添加不了好友&#xff1b; 解决方案&#xff1a; 目前只能通过微信小程序跳转至公众号&#xf…

uniapp写小程序跳转公众号H5链接

需求&#xff1a; 需求是小程序的首页banner图来自pc端配置生产。 在小程序点击轮播的banner图后&#xff0c;跳到对应的linkurl&#xff0c;但是我们和客户约定好&#xff0c;只能跳转公众号。 一开始看了小程序的文档&#xff0c;需要配置什么业务域名&#xff0c;下载校验…