K210-AI视觉

1、颜色识别

image.find_blobs(
thresholds,
invert=False,
roi, 
x_stride=2, 
y_stride=1,
area_threshold=10, 
pixels_threshold=10, 
merge=False,
margin=0, 
threshold_cb=None, 
merge_cb=None)

thresholds : 必须是元组列表。 [(lo, hi), (lo, hi), …, (lo, hi)] 定义你想追踪的颜色范围。 对于灰度图像,每个元组需要包含两个值 - 最小灰度值和最大灰度值。 仅考虑落在这些阈值之间的像素区域。
对于 RGB565 图像,每个元组需要有六个值(l_lo,l_hi,a_lo,a_hi,b_lo,b_hi) - 分别是 LAB L,A 和 B通道的最小值和最大值。
阈值这个参数不是万能的,要依据个人实际情况进行设置,最准确的就是上电运行,将摄像头对着被追踪物体,然后停止运行,打开阈值编辑器取阈值。

roi : 设置色块寻找区域,对于 QVGA ,全屏寻找就设置成(0,0,320,240),这四个参数分别代表的是x,y,w,h,即x轴开始坐标,y轴开始坐标,x轴宽度,y轴高度。x轴和y轴的零点坐标都在图像的左上方。这个值略微修改就可以摇身一变,让寻找色块变成巡线。比如你可以设置这个值为(0,110,320,20),就表示你要从x轴的0坐标开始,到x轴的320,y轴的110坐标开始,到y轴的130,寻找色块,这样一来,就可以知道小车的当前位置是在x轴哪里,x轴中心是160,如果当前位置小于160,就左转,大于160,就右转,这样就可以完成巡线。

x_stride y_stride : 设置色块x轴、y轴上像素的最小宽度,如果被寻找的目标比较大,可以调大这两个参数提高寻找速度。

color_pixels_threshold :设置被找色块像素的个数阈值,如果被找到的色块像素个数少于这个值,将会被滤除,这是作为一种辅助手段,排除环境干扰的好方法。

color_area_threshold : 设置被找色块被框面积的个数阈值,如果被找到的色块被框面积少于这个值,将会被滤除,这是作为一种辅助手段,排除环境干扰的好方法。

color_merge : 需不需要合并找到的像素,一般都是需要的。

black.color_margin : 控制色块合并间距,例如调节此参数为1,若上面选择True合并色块且被找到的色块有多个,它们之间如果相距1像素,则会将这些色块合并。

返回的对象blob
在这里插入图片描述

思路说明:
#1.导入相关模块
#2.初始化模块
#3.定义颜色阈值
#4.寻找相匹配的颜色(红,绿,蓝)import sensor,image,lcd,time#------常用初始化   ↓-------
lcd.init()
sensor.reset()                      #复位摄像头
sensor.set_pixformat(sensor.RGB565) # 设置像素格式 RGB565
sensor.set_framesize(sensor.QVGA)   # 设置帧尺寸 QVGA (320x240)
#------常用初始化   ↑-------
'''对于 RGB565 图像,每个元组需要有六个值(l_lo,l_hi,a_lo,a_hi,b_lo,b_hi) 
分别是 LAB中 L,A 和 B 通道的最小值和最大值。
L的取值范围为0-100,a/b 的取值范围为-128到127。'''#红色阈值[0],绿色阈值[1],蓝色阈值[2]
rgb_thresholds   =[(30, 100, 15, 127, 15, 127),
(0, 80, -70, -10, -0, 30), 
(0, 30, 0, 64, -128, -20)]   #阈值调试可以在IDE上看哦while True:img=sensor.snapshot()blobs = img.find_blobs([rgb_thresholds[1]])if blobs:for b in blobs:tmp=img.draw_rectangle(b[0:4])  #在图像上绘制一个矩形。tmp=img.draw_cross(b[5], b[6])  #画十字交叉c=img.get_pixel(b[5], b[6])#    返回(x, y)位置的RGB888像素元组lcd.display(img)

2、KPU使用

import KPU as kpu
import image
#加载模型
task = kpu.load(offset or file_path)anchor = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025)
kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)#pu_net: kpu 网络对象, 即加载的模型对象, KPU.load()的返回值
#threshold: 概率阈值, 只有是这个物体的概率大于这个值才会输出结果, 取值范围:[0, 1]
#nms_value: box_iou 门限, 为了防止同一个物体被框出多个框,当在同一个物体上框出了两个框,这两个框的交叉区域占两个框总占用面积的比例 如果小于这个值时, 就取其中概率最大的一个框
#anchor_num: anchor 的锚点数, 这里固定为 len(anchors)//2
#anchor: 锚点参数与模型参数一致,同一个模型这个参数是固定的,和模型绑定的(训练模型时即确定了), 不能改成其它值。img = image.Image()
#运行模型
kpu.run_yolo2(task, img)
# task: kpu_load 返回的 kpu_net 对象
# image_t:从 sensor 采集到的图像

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/68072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java elasticsearch scroll模板实现

一、scroll说明和使用场景 scroll的使用场景:大数据量的检索和操作 scroll顾名思义,就是游标的意思,核心的应用场景就是遍历 elasticsearch中的数据; 通常我们遍历数据采用的是分页,elastcisearch还支持from size的…

面向对象基础

文章目录 面向对象基础一.面向对象介绍二.设计对象并使用三.封装四.This关键字五.构造方法六.标准的Javabean类七.对象内存图八.基本数据类型和引用数据类型九.成员和局部 面向对象基础 一.面向对象介绍 面向:拿,找 对象:能干活的东西 面向对象编程:找东西来做对应的事情 …

面试2:通用能力

15丨如何做好开场:给自我介绍加“特效 第一层,满足面试官对信息的期待 这是对自我介绍的基本要求,把个人信息、主要经历、经验和技能有条理地组织起来, 有逻辑地讲出来。需要找出多段经历的关联性和发展变化,形成连…

两个路由器如何连接设置的方法攻略

一、前言 随着智能家居时代来临,家里的网络部署需求开始复杂起来。往往一个路由器已经不能满足需求或者不利于拓展。两个路由器连接最常见的情况是家中已有一个路由器,并且已经通过这个路由器来正常上网。现在是因某些原因想在不改变已经在用的路由器的设…

将本地jar打包到本地maven仓库或maven私服仓库中

将本地jar包打包到本地的maven仓库中的命令&#xff1a; mvn install:install-file -DgroupIdtebie.applib.api -DartifactIdapiclient -Dversion1.0-SNAPSHOT -Dfile本地jar路径 -Dpackagingjar说明&#xff1a; DgroupId pom中的<groupId></groupId> Dartifact…

[git]分支操作

Checkout 相当于切换到该分支&#xff0c;但是因为不能直接操作远程分支&#xff0c;会在本地同步一个完全一样的分支。 注意&#xff1a;切换分支前本地先进行提交&#xff08;addcommit&#xff09;&#xff0c;否则有可能代码会丢失。 New Branch from Selected... 创建一…

Websocket、SessionCookie、前端基础知识

目录 1.Websocket Websocket与HTTP的介绍 不同使用场景 Websocket链接过程 2.Session&Cookie Cookie的工作原理 Session的工作原理 区别 3.前端基础知识 1.Websocket Websocket与HTTP的介绍 HTTP&#xff1a; 1.HTTP是单向的&#xff0c;客户端发送请求&#xff0…

Middleware ❀ Kafka功能与使用详解

文章目录 1. 概述1.1. 消息队列1.2. 应用场景1.3. 工作模式1.4. 基础结构1.4.1. 结构组件1.4.2. 数据同步1.4.3. ACK机制1.4.4. 分区机制1.4.4.1. 使用Partition Key写入1.4.4.2. 轮询写入 - 默认规则1.4.4.3. 指定Partition写入 1.4.5. Offset偏移量1.4.5.1. 消息顺序性1.4.5.…

macOS通过钥匙串访问找回WiFi密码的详细教程

如果您忘记了Mac电脑上的WiFi密码&#xff0c;可以通过钥匙串访问来找回它。具体步骤如下&#xff1a; 1.打开Mac电脑的“启动台”&#xff0c;然后在其他文件中找到“钥匙串访问”。 2.运行“钥匙串访问”应用程序&#xff0c;点击左侧的“系统”&#xff0c;然后在右侧找到…

R语言应用interactionR包进行亚组相加交互作用分析

在统计分析中交互作用是指某因素的作用随其他因素水平变化而变化&#xff0c;两因素共同作用不等于两因素单独作用之和(相加交互作用)或之积(相乘交互作用)。相互作用的评估是尺度相关的&#xff1a;乘法或加法。乘法尺度上的相互作用意味着两次暴露的综合效应大于&#xff08;…

023-从零搭建微服务-推送服务(三)

原【短信服务】更名【推送服务】 写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff08;后端&#xff09;&#xff1a;https://gitee.com/csps/mingyue 源码地址&#xff08;前端&#xff09;&a…

地理测绘基础知识(5) 照射计算下篇

在上一篇中&#xff0c;我们解决了照射计算的基本模型关系&#xff0c;并能够根据手电的位置指向&#xff0c;在地表求取光斑。但是&#xff0c;前文使用的是设置探针求取场强的点求取&#xff0c;对于绘制地表的等值线包络图、求取地表包线的具体解析情况&#xff0c;就不够用…

Vulnstack----5、ATTCK红队评估实战靶场五

文章目录 一 环境搭建二 外网渗透三 内网信息收集3.1 本机信息收集3.2 域内信息收集 四 横向移动4.1 路由转发和代理通道4.2 抓取域用户密码4.3 使用Psexec登录域控4.4 3389远程登录 五、痕迹清理 一 环境搭建 1、项目地址 http://vulnstack.qiyuanxuetang.net/vuln/detail/7/ …

MySQL——MySQL的基础操作部分

使用命令行登录 mysql -u root -p 直接敲击回车后输入密码即可&#xff1a; 当看到出现“mysql>“的符号之后&#xff0c;就表示已经进入到了&#xff2d;&#xff59;&#xff33;&#xff31;&#xff2c;系统中&#xff0c;就可以输入&#xff2d;&#xff59;&#xf…

虚拟机(三)VMware Workstation 桥接模式下无法上网

目录 一、背景二、解决方式方式一&#xff1a;关闭防火墙方式二&#xff1a;查看桥接模式下的物理网卡是否对应正确方式三&#xff1a;查看物理主机的网络属性 一、背景 今天在使用 VMware Workstation 里面安装的 Windows 虚拟机的时候&#xff0c;发现虽然在 NAT 模式下可以…

【Electron将HTML项目打包成桌面应用exe文件】

目标&#xff1a;前端将静态页面文件夹所有页面打包成一个exe文件&#xff08;不包含其它文件&#xff09;可运行。 步骤 1、初始化 npm init此时项目多出一个package.json文件。 {"name": "my-electron-app","version": "1.0.0",…

动态规划:路径和子数组问题(C++)

动态规划&#xff1a;路径和子数组问题 路径问题1.不同路径&#xff08;中等&#xff09;2.不同路径II&#xff08;中等&#xff09;3.下降路径最⼩和&#xff08;中等&#xff09;4.地下城游戏&#xff08;困难&#xff09; 子数组问题1.最大子数组和&#xff08;中等&#xf…

目标检测框架MMDetection训练自定义数据集实验记录

在上一篇博文中&#xff0c;博主完成了MMDetection框架的环境部署与推理过程&#xff0c;下面进行该框架的训练过程&#xff0c;训练的入口文件为tools/train.py&#xff0c;我们需要配置的内容如下&#xff1a; parser.add_argument(--config,default"/home/ubuntu/prog…

RuntimeError: ANTLR version mismatch

规则引擎源码&#xff1a; nemonik/Intellect: DSL and Rules Engine For Python (github.com) 运行程序 Example.py 时报错&#xff1a; RuntimeError: ANTLR version mismatch: The recognizer has been generated with API V0, but this runtime does not support this. …

vue+elementUI el-table实现单选

if (selection.length > 1) {this.$refs.table.clearSelection();this.$refs.table.toggleRowSelection(selection.pop());}