K210-AI视觉

news2024/10/6 16:16:11

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.coloradmin.cn/o/974202.html

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

相关文章

Python数据分析实战-Series转DataFrame并将index设为新的一列(附源码和实现效果)

实现功能 Series转DataFrame并将index设为新的一列 实现代码 import pandas as pd# 创创建series series pd.Series([1, 2, 3, 4, 5])# 创建一个DataFrame对象 data {column_name: series} df pd.DataFrame(data)# 重新设置索引,将原有的索引作为新的一列 df.r…

计算机的 bit(比特)和Byte(字节)

我们来说说和数据有关的单位 bit 和 Byte。 在说这这个数据当我之前,大家应该都知道计算机实际上只能处理0和1。 计算机能够把0和1转换为电路中的信号来进行计算,这个其实就是计算机的本质。 单位定义 我们先对需要使用的单位进行一些定义。 bit&…

Swift 周报 第三十六期

文章目录 前言新闻和社区消息称苹果公司和印度财政部官员磋商,扩大在印度的制造产能iPhone 15 Pro 机型新增泰坦灰iPhone 15 全系配 USB-C 苹果拒绝接口和安卓互通 提案正在审查的提案 Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组整理周报的第三十…

AcWing 787:归并排序

【题目来源】https://www.acwing.com/problem/content/789/【题目描述】 给定你一个长度为 n 的整数数列。 请你使用归并排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。【输入格式】 输入共两行,第一行包含整数 n。 第二行包含 n 个整数&#…

鼠标知识系列之星闪鼠标

随着 2023.8.4 华为 HDC 大会的落幕,一个新的名词开始进入了人们的视线:星闪 NaerLink,随着星闪技术引入键鼠圈子的还有一个名词:星闪鼠标。 正如我们之前鼠标知识分享系列提到过的,目前市面上的鼠标主要是有线鼠标和…

数据库原理及应用(MySQL)

建议大屏观看,避免格式错误,影响观感 目录 第一章 数据库系统概述 1.数据库系统概述 1.1.信息 1.2.数据 1.3.信息和数据之间的联系 1.4.数据库(DB) 1.5.数据库管理系统(DBMS) 1.6.数据库管理系统的…

简单了解ARP协议

目录 一、什么是ARP协议? 二、为什么需要ARP协议? 三、ARP报文格式 四、广播域是什么? 五、ARP缓存表是什么? 六、ARP的类型 6.1 ARP代理 6.2 免费ARP 七、不同网络设备收到ARP广播报文的处理规则 八、ARP工作机制原理 …

楠姐技术漫话:接着唠唠社区发现 | 京东云技术团队

★ halo,大家好很开心又和大家见面了 ★ 在第一篇 楠姐技术漫画:图计算的那些事 发布之后,楠姐收到了很多建议、鼓励和支持,非常感谢大家的喜欢,所以楠姐尽自己所能马不停蹄开始第二篇的创作,虽迟但到~ ★…

高等数学笔记

|sinx|连续不可导 只要在x0处存在极限且极限等于f(x0)则函数在此处连续 如果某点可导则左右导数应该相等(可导一定连续,连续不一定可导) 双曲函数的由来 塞入dx 莱布尼茨公式 sin(nx)的k次导n^k*sin(nxkΠ/2) 注意符号! 二阶导公…

实时操作系统Freertos开坑学习笔记:(五):任务调度和时间片调度

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、任务调度1.开启任务调度器函数2.启动第一个任务 二、任务切换的原理三、时间片调度1.基本概念2.看一个实际例程①我们设置滴答定时器中断时间为50ms&#x…

低代码平台:IVX 重新定义编程

目录 🍬一、写在前面 🍬二、低代码平台是什么 🍬三、为什么程序员和技术管理者不太可能接受“低代码”平台? 🍭1、不安全(锁定特性) 🍭2、不信任 🍬四、IVX低代码平台 &a…

Vue3数值动画(NumberAnimation)

效果如下图:在线预览 APIs 参数说明类型默认值必传from数值动画起始数值number0falseto数值目标值number1000falseduration数值动画持续时间,单位msnumber3000falseautoplay是否自动开始动画booleantruefalseprecision精度,保留小数点后几位…

vue响应式详解

1. 响应式的定义 我们都知道,vue是基于javascript的,那我们使用一段javascript代码来描述响应式 let a 1,b 1,c; c a b; console.log(c) // 输出 2 // 改变 a的值 a 3; // 重新给c赋值 即把 c a b; 再执行一遍c的值才能变为 4 // c a b; // …

map组件轨迹,定位,导航,定位点遮罩

小程序使用map组件实现轨迹&#xff0c;定位&#xff0c;导航&#xff0c;定位点遮罩 map组件常用属性说明&#xff0c; 看着还要自己研究写 我们立志成为cv工程师 直接上代码&#xff01;&#xff01;&#xff01; <template><map id"map" class"m…

天软高频因子日内及隔夜动量因子

天软因子序列课程再次启动&#xff0c;本周四&#xff08;9月7日&#xff09;下午4点相约腾讯会议&#xff0c;可直接扫描下方二维码&#xff0c;欢迎大家参会&#xff01; 本次会议主要内容有&#xff1a; 1.介绍日内及隔夜动量因子的构造逻辑&#xff0c;如何选择市 场代理变…

Spring AOP与静态代理/动态代理

文章目录 一、代理模式静态代理动态代理代理模式与AOP 二、Spring AOPSping AOP用来处理什么场景jdk 动态代理cglib 动态代理面试题&#xff1a;讲讲Spring AOP的原理与执行流程 总结 一、代理模式 代理模式是一种结构型设计模式&#xff0c;它允许对象提供替代品或占位符&…

说说MySQL主从复制?

分析&回答 主从复制原理 主库记录binlog日志 在每次准备提交事务完成数据更新前&#xff0c;主库将数据更新的事件记录到二进制日志binlog中。主库上的sync_binlog参数控制binlog日志刷新到磁盘。 从库IO线程将主库的binlog日志复制到其本地的中继日志relay log中 从库会…

K8S的CKA考试环境和题目

CKA考试这几年来虽然版本在升级&#xff0c;但题目一直没有大的变化&#xff0c;通过K8S考试的方法就是在模拟环境上反复练习&#xff0c;通过练习熟悉考试环境和考试过程中可能遇到的坑。这里姚远老师详细向大家介绍一下考试的环境和题目&#xff0c;需要详细资料的同学请在文…

解决C++ 遇笔试题输入[[1,2,3,...,],[5,6,...,],...,[3,1,2,...,]]问题

目录 0 引言1 思路2 测试结果3 完整代码4 总结 0 引言 现在面临找工作问题&#xff0c;做了几场笔试&#xff0c;遇到了一个比较棘手的题目就是题目输入形式如下&#xff1a; [ [3,1,1], [3,5,3], [3,2,1] ] 当时遇到这个问题还是比较慌的&#xff0c;主要是之前没有遇到这样的…

RHCA之路---EX280(2)

RHCA之路—EX280(2) 1. 题目 Associate the share named /exports/registry to the built-in registry running within your OpenShift Enterprise instance so that it will be used for permanent storage Use exam-registry-volume for the volume name and exam-registry-…