OpenMV——色块追踪

Python知识:

1.给Python的列表赋值:

定义一个元组时就是 元组a = (1,2,…)
元组中可以只有一个元素,但是就必须要加一个 “ , ”
如 a = (2,)

而列表的定义和元组类似,只是把()换成[]:

#那么下面的colour_1 ~ 3属于元组,只能进行一次赋值就是初始化的时候,之后不允许修改
colour_1 = (51, 17, -4, -65, 45, -53)
cplour_2 = (51, 17, -4, -65, 41, -51)
cplour_3 = (2, 17, -4, -65, 41, -51)
#而thresholds是一个列表,这时候这个列表就有了三个颜色的阈值信息,与元组不同列表后续能够进行添加和删除
thresholds = [cplour_1,cplour_2,cplour_3]thresholds = [cplour_1,cplour_2]

阈值:

一个颜色的阈值是这样的:
red = (minL, maxL, minA, maxA, minB, maxB)

阈值选择工具:

下面是官方手册的内容:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

find_blobs函数:

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

函数参数介绍(来自星瞳科技官方手册):
注意:
1.上面给的是函数的声明,参数从x_stride 到 merge_cb都是默认参数,如果不进行更改,实参的值就是上面的默认值,使用时最基本的就是传入一个颜色阈值赋值给普通形参thresholds,thresholds是一个列表,如果你只给他一个颜色的阈值他就只返回一个颜色的色块信息,如果你给他传入一个包含多个颜色的阈值元组,他就能识别多个颜色并返回对应列表中的颜色的色块信息。
2.ROI=Auto在图像处理或机器视觉的上下文中,通常表示感兴趣区域(Region of Interest, ROI)被设置为自动选择或自动检测。这里的“Auto”意味着不需要手动指定ROI的具体位置(如左上角的坐标、宽度和高度),而是由算法或软件自动根据一定的规则或条件来确定ROI。 但是注意在传入实参时并不能出现 roi = Auto
例如:

blobs = img1.find_blobs([red],roi = auto)
#只能
blobs = img1.find_blobs([red],)
#或者
blobs = img1.find_blobs([red],roi = (1123))#然后列表[red] 与 (1,1,2,3)将会被作为实参分别传给thresholds与roi,其他参数就会被赋默认值,如果不传(1,1,2,3),那么roi会被OpenMV自己设置的方法进行赋值

在这里插入图片描述

find_blobs函数返回值:

来自星瞳科技官方手册

  1. find_blobs函数根据传入的颜色列表thresholds,然后对保存在一帧照片数据的图像对象img进行查找,

  2. 如果查找到颜色列表thresholds = [colour_1,colour_2,colour_3]中的colour_1颜色的色块就会返回该色块的信息给列表blobs,

  3. 那么检测到三个色块,那么列表blobs就会有三个元素
    如:blobs = [blob_1,blob_2,blob_3],然后每个元素blob就会包含色块的信息(x坐标,中心坐标,色块的矩形的大小等等)

有了色块信息之后:

来自星瞳科技官方手册

根据色块信息进行色块追踪:

举例:
在这里插入图片描述

import sensor#引入感光元件的模块# 设置摄像头
sensor.reset()#初始化感光元件
sensor.set_pixformat(sensor.RGB565)#设置为彩色
sensor.set_framesize(sensor.QVGA)#设置图像的大小
sensor.skip_frames(n = 10)#跳过n张照片,在更改设置后,跳过一些帧,等待感光元件变稳定。
sensor.set_auto_gain(False)
sensor.set_auto_whitebal(False)
green = (51, 17, -4, -65, 45, -53)
# 一直拍照
while(True):img1 = sensor.snapshot()#拍摄一张照片,img为一个image对象blobs = img1.find_blobs([green])for blob in blobs:print(blob.cx())rect_tuple = blob.rect()img1.draw_rectangle(rect_tuple, color=(255,0,0))
  1. 我通过阈值选择工具获取到一个颜色阈值green = (51, 17, -4, -65, 45, -53)

  2. 然后拍了一帧照片并将该照片的信息赋值给img1 = sensor.snapshot()#拍摄一张照片,img为一个image对象

  3. 然后对img1照片进行色块寻找,要寻找的色块的颜色阈值就是thresholds = [red],我只传入了一个颜色阈值也可以传入多个thresholds = [red,blue,green],

  4. 然后find_blobs函数就在这一帧照片img1中查找是否出现颜色列表thresholds中的元素的颜色,如果出现将出现的色块的信息返回赋值给列表blobs,如果一帧图片中出现三个色块,那么列表blobs就会有三个元素,分别代表那三个色块的信息

  5. 而通过for循环,blob会依次赋三个色块的值,第一次循环就是色块1

  6. 然后对blob使用.rect方法,返回色块1的外框——矩形元组(x, y, w, h)并赋值给rect元组rect_tuple = blob.rect()

  7. img1.draw_rectangle(rect_tuple, color=(255,0,0)),然后在图像数据img1中使用.draw_rectangle的方法,在img1中根据矩形元组(x, y, w, h)和颜色color=(255,0,0)画出一个红色的矩形框

注意:
IDE中的帧缓冲区是缓冲拍到的帧图像,如果只拍了一次那就只有一帧图像,如果一直拍,那么前一帧的图像就会被新拍的覆盖,所以其实是在前一帧的照片上画出色块,然后才显示下一帧,但是如果你只拍1帧又很难识别到色块,我拍10帧就会有帧缓冲区显示我程序中要画的矩形

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

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

相关文章

(计算机网络)运输层

一.运输层的作用 运输层:负责将数据统一的交给网络层 实质:进程在通信 TCP(有反馈)UDP(无反馈) 二.复用和分用 三. TCP和UDP的特点和区别 进程号--不是固定的 端口号固定--mysql--3306 端口--通信的终点 …

苹果的“AI茅”之路只走了一半

今年苹果发布会最大的亮点,也许是和华为“撞档”,又或者是替腾讯“发布”新手游,但肯定不是iPhone 16。 9月10日,苹果秋季新品发布会与华为见非凡品牌盛典相继举行,iPhone 16系列也与HUAWEI Mate XT同日发布。 不过&…

传统CV算法——特征匹配算法

Brute-Force蛮力匹配 Brute-Force蛮力匹配是一种简单直接的模式识别方法,经常用于计算机视觉和数字图像处理领域中的特征匹配。该方法通过逐一比较目标图像中的所有特征点与源图像中的特征点来寻找最佳匹配。这种方法的主要步骤包括: 特征提取&#xff…

js中【微任务】和【宏任务】长篇解读

在 JavaScript 中,理解微任务(microtasks)和宏任务 (macrotasks)是掌握异步编程和事件循环(Event Loop)机制的关键。这两个概念影响了代码的执行顺序,特别是在涉及异步操作(如 setTimeout、Promise、async/…

postgres--系统视图,表

pg_stat_all_tables 累积统计系统-监控数据库活动 pg_stat_all_tables是一个系统视图,它为当前数据库中的每个表(包括TOAST表)提供一行数据。显示了关于特定表的访问统计信息,比如访问次数等。pg_stat_user_tables和pg_stat_sys_…

根据NVeloDocx Word模板引擎生成Word(三)

基于永久免费开放的《E6低代码开发平台》的Word模版引擎NVeloDocx,实现根据Word模版生成Word文件,前面2篇已经非常详细介绍了《主表单字段》,《子表记录循环输入到表格》。那这一篇我们就介绍插入单张图片、二维码,条形码等等&…

python-网页自动化(三)

如果遇到使用 ajax 加载的网页,页面元素可能不是同时加载出来的,这个时候尝试在 get 方法执行完 成时获取网页源代码可能并非浏览器完全加载完成的页面。所以,这种情况下需要设置延时等待一定时间,确保全部节点都加载出来。 那么&…

邦飞利减速机有哪些系列

邦飞利减速机拥有多个系列,以满足不同领域和场景的需求。以下是邦飞利减速机的一些主要系列: W系列蜗轮蜗杆减速机: 如W63、W75、W86、W110等型号,广泛应用于各种需要减速传动的设备中。VF系列微型蜗轮蜗杆减速机: 包…

搜维尔科技:AcuMap - 针灸模拟VR训练解决方案

AcuMap第一个针灸VR训练解决方案。全面且医学上准确的人体映射,其中 14 条经络和 361 个穴位以 3D 形式可视化。您还可以在虚拟人体模型上模拟针刺。主要特点 - 可视化 14 条经络及其分支 - 基于 4 个主要类别的 361 个穴位:五行、危险穴位、补邪和特殊穴…

P5745【深基附B例】区间最大和

思路一&#xff1a;枚举区间头尾i&#xff0c;j&#xff0c;然后对i和j里面所有数字累加起来求和&#xff0c;再判断是否在不大于M的情况下最大。 #include<iostream> using namespace std; int a[8000005]; int main() {int n, M, ansm 0, ai, aj;cin >> n >…

【Petri网导论学习笔记】Petri网导论入门学习(一)

Petri 网导论 如需学习转载请注明原作者并附本帖链接&#xff01;&#xff01;&#xff01; 如需学习转载请注明原作者并附本帖链接&#xff01;&#xff01;&#xff01; 如需学习转载请注明原作者并附本帖链接&#xff01;&#xff01;&#xff01; 发现网上关于Petri网的学习…

【机器学习】从零开始理解深度学习——揭开神经网络的神秘面纱

1. 引言 随着技术的飞速发展,人工智能(AI)已从学术研究的实验室走向现实应用的舞台,成为推动现代社会变革的核心动力之一。而在这一进程中,深度学习(Deep Learning)因其在大规模数据处理和复杂问题求解中的卓越表现,迅速崛起为人工智能的最前沿技术。深度学习的核心是…

金智维K-RPA基本介绍

一、K-RPA基本组成 K-RPA软件机器人管理系统基于“RPAX”数字化技术打造&#xff0c;其核心系统由管理中心(Server)、设计器(Control)、机器人(Robot/Agent)三大子系统组成&#xff0c;各子系统协同工作&#xff0c;易于构建协同式环境。 管理中心&#xff08;Server&#xff…

【Linux 运维知识】Linux 编译后的内核镜像大小

Linux 内核镜像的大小取决于多个因素&#xff0c;包括内核的版本、启用的功能、模块的数量以及特定的编译配置。 以下是常见情况下不同内核镜像的大小范围&#xff1a; 1. 标准内核镜像大小 压缩后的内核镜像 (vmlinuz)&#xff1a; 压缩后的内核镜像文件&#xff0c;通常位于…

《MaPLe: Multi-modal Prompt Learning》论文解读

系列文章目录 文章目录 系列文章目录论文细节理解1、研究背景2、论文贡献3、方法框架4、研究思路5、实验6、限制 论文细节理解 预训练的视觉语言&#xff08;V-L&#xff09;模型&#xff0c;如CLIP&#xff0c;已经显示出对下游任务的出色泛化能力。然而&#xff0c;它们对输入…

基于boost的共享内存通信demo

文章目录 前言一、共享内存管理二、图像算法服务中的IPC通信流程三、demo实验结果总结 前言 在一个系统比较复杂的时候&#xff0c;将模块独立成单独的进程有助于错误定位以及异常重启恢复&#xff0c;不至于某个模块发生崩溃导致整个系统崩溃。当通信数据量比较大时&#xff…

AI视频生成-一键创作动漫

一、前言 随着深度学习技术和计算能力的进步&#xff0c;AI生成视频&#xff08;AIGV&#xff09;已经从一个研究概念演变成了一种实用工具&#xff0c;其应用场景也在不断拓展。从自动合成新闻报道到虚拟人物的互动视频&#xff0c;从电影特效生成到游戏场景的实时渲染&#…

C++基础知识6 vector

vector 1.vector的介绍及使用1.1 vector的介绍1.2 vector的使用1.2.1 vector的定义1.2.2 vector iterator 的使用1.2.3 vector 常用的接口1.2.4 vector 空间增长问题1.2.4 vector 迭代器失效问题。&#xff08;重点&#xff09; 2.vector模拟实现 1.vector的介绍及使用 1.1 ve…

Dubbo精要

1、为什么需要 Dubbo&#xff1f; 分布式系统中的服务调用和协调问题&#xff1a;在分布式系统中&#xff0c;服务之间的相互依赖会导致复杂的通信和协调问题。Dubbo提供了高效的服务调用和自动注册、发现等功能&#xff0c;使得构建分布式应用程序更加容易。服务治理和服务调…

局域网设备自动发现常用方法

文章目录 需求实现方法ARP (Address Resolution Protocol)Ping ip的流程抓包如下代码实现 mDNS 对比测试Avahi 介绍Avahi 安装Avahi 使用测试代码 需求 局域网设备自动发现是软件开发中的一个常见且重要的需求&#xff0c;它简化了设备间的协作机制&#xff0c;降低了软件各模…