《DNK210使用指南 -CanMV版 V1.0》第三十六章 image图像色块追踪实验

news/2024/11/8 15:50:15/文章来源:https://www.cnblogs.com/zdyz/p/18535219

第三十六章 image图像色块追踪实验

1)实验平台:正点原子DNK210开发板

2)章节摘自【正点原子】DNK210使用指南 - CanMV版 V1.0

3)购买链接:https://detail.tmall.com/item.htm?&id=782801398750

4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html

5)正点原子官方B站:https://space.bilibili.com/394620890

6)正点原子K210技术交流企鹅群:605557868

在上一章节中,介绍了image模块中图像特征检测方法给的使用,本章将继续介绍image模块中图像色块追踪方法的使用。通过本章的学习,读者将学习到image模块中图像色块追踪的使用。
本章分为如下几个小节:
36.1 image模块图像色块追踪方法介绍
36.2 硬件设计
36.3 程序设计
36.4 运行验证

36.1 image模块图像色块追踪方法介绍
image模块为Image对象提供了find_blobs()方法,用于查找图像中的所有色块,find_blobs()方法如下所示:

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, merge_cb)

find_blobs()方法用于根据指定的颜色阈值查找图像中的所有色块,并返回image.blob对象列表。
thresholds指的是颜色阈值,该参数必须是元组列表,对于灰度图,每个阈值元组需包含两个值,分别为最小灰度值和最大灰度值,对于RGB565图像,每个阈值元组需要包含六个值,分别是LAB色彩空间下,L、A、B三个通道的最大值和最小值,若要追踪多种颜色的色块,可以在阈值元组列表中传入多个阈值元组。
invert指的是是否对阈值进行翻转操作,阈值翻转后,将追踪阈值之外的色块。
roi指的是对Image对象感兴趣的区域,若未指定,即为图像矩形。
x_stride和y_stride指的是图像处理时需要跳过的X和Y像素的数量,若已知被检测色块较大,可以增加该参数。
area_threshold指的是边界框区域阈值,边界框区域小于该参数的色块将会被过滤。
pixels_threshold指的是像素数量阈值,像素数量小于该参数的速快将会被过滤。
merge指的是是否合并边缘矩形相互交错重重叠且没有被过滤的色块。
margin指的是增大或减小相较测试用色块边界矩形的大小。
threshold_cb指的是阈值过滤的回调函数,该函数会接收到被过滤色块的image.blob对象,并通过返回True来保留色块,通过返回False来过滤色块。
merge_cb指的是色块合并回调函数,该函数会接收到两个即将被合并的色块的image.blob对象,并通过返回True来合并色块,通过返回False来禁止色块合并。
find_blobs()方法会返回image.blobs对象列表。
find_blobs()方法的使用示例如下所示:

import image
img = image.Image(size=(320, 240))
threshold = (8, 63, 8, 49, -77, -36)
blobs = img.find_blobs([threshold], False, (0, 0, img.width(), img.height()), x_stride=2, y_stride=1, 
area_threshold=10, pixels_threshold=10, merge=True, margin=10)
for b in blobs:img.draw_rectangle(b.rect(), color=(255, 0, 0))

关于颜色阈值的设定,CanMVIDE软件提供了“阈值编辑器”工具,可以方便地获取到想要的阈值。通过依次点击CanMV IDE软件上方工具栏中的“工具”à“机器视觉”à“阈值编辑器”,即可打开“阈值编辑器”工具,打开时会提示需要导入一张源图像,可以直接使用“帧缓冲区”窗口中的图像,也可以从本地文件系统中选取,如下图所示:

图36.1.1 打开“阈值编辑器”工具

选好源图像后,便会自动打开“阈值编辑器”工具窗口,接着便可通过提供的一些选项列表和滑块来调整需要的阈值,如下图所示:

图36.1.2 “阈值编辑器”工具窗口

36.2 硬件设计
36.2.1 例程功能

  1. 获取摄像头输出的图像,并使用image模块对图像进行色块追踪,追踪到色块后将其框出,最后将图像显示在LCD上。

36.2.2 硬件资源
本章实验内容,主要讲解image模块的使用,无需关注硬件资源。

36.2.3 原理图
本章实验内容,主要讲解image模块的使用,无需关注原理图。

36.3 程序设计
36.3.1 image模块图像色块追踪方法介绍
有关image模块图像色块追踪方法的介绍,请见第36.1小节《image模块图像色块追踪方法介绍》。

36.3.2 程序流程图

图36.3.2.1image图像色块追踪实验流程图

36.3.3 main.py代码
main.py中的脚本代码如下所示:

import lcd
import sensor
import gc
lcd.init()
sensor.reset()
sensor.set_framesize(sensor.QVGA)
sensor.set_pixformat(sensor.RGB565)
sensor.set_hmirror(False)
sensor.set_auto_gain(False, gain_db=6.0)
sensor.set_auto_whitebal(False)
while True:img= sensor.snapshot()# 色块追踪threshold = (7, 63, -21, 46, -71, -23)blobs = img.find_blobs([threshold], False, (0, 0, img.width(), img.height()), x_stride=2, y_stride=1, 
area_threshold=10, pixels_threshold=10, merge=True, margin=10)for b in blobs:img.draw_rectangle(b.rect(), color=(255, 0, 0))lcd.display(img)gc.collect()

可以看到一开始是先初始化了LCD和摄像头,并且需要注意的是,在进行色块追踪时,需要关闭摄像头的自动增益和自动白平衡,才能得到更好的效果。
接着在一个循环中不断地获取摄像头输出的图像,因为获取到的图像就是Image对象,因此可以直接调用image模块为Image对象提供的各种方法,然后就是对图像进行色块追踪,并将其在图像中框出,最后在LCD显示图像。

36.4 运行验证
将DNK210开发板连接CanMV IDE,点击CanMV IDE上的“开始(运行脚本)”按钮后,便能看到LCD上显示了摄像头输出的图像,并且指定颜色阈值的色块也被框了出来,如下图所示:

图36.4.1 框出追踪到的色块

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

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

相关文章

LogoGalleria:免费AI Logo生成器,轻松打造专属品牌标识

LogoGalleria 是一个免费且简单易用的AI Logo生成工具,帮助用户无需设计经验即可快速生成专业Logo,适合创业公司、YouTube频道、个人项目等多种用途。摘要:LogoGalleria 是一个免费且简单易用的AI Logo生成工具,帮助用户无需设计经验即可快速生成专业Logo,适合创业公司、Y…

线段树知识乱讲

前言 算法竞赛题目考察的是选手对于数据结构的选取与算法的巧妙结合,而数据结构中线段树扮演一个至关重要的角色,而近期(CSP 结束)在 hfu 的安排下我们需要自己弄一周的 ds,所以就有了这篇奇妙的博客。 线段树基础知识 在我看来,线段树其实就是在数组的基础上添加了一些额…

绞车运行状态识别智慧矿山一体机石矿堵塞识别智慧煤矿方案

在全球数字化转型的大背景下,煤矿行业正站在转型升级的十字路口。新兴技术如互联网、物联网、人工智能的快速发展,为煤矿行业带来了前所未有的机遇,同时也提出了新的挑战。煤矿行业在信息化水平、监管难题、安全事故频发以及数据孤岛等方面仍面临诸多挑战。在这样的背景下,…

load_allmotor

XGO使用树莓派做为机器狗的大脑,推荐使用VScode对XGO进行编程,可以通过一下步骤进行开发: 准备工作安装 VScode: 确保你已经在你的电脑上安装了 VScode。你可以从VScode官网下载并安装。 连接网络:根据快速入门让XGO连上网络,操作机器狗按键让机器狗显示IP地址如下图所示…

央国企“严选”!天翼云夺得IaaS+PaaS市场桂冠!

10月17日,赛迪顾问发布的《2024中国央国企云市场研究报告》显示,2023年,在中国央国企云“IaaS+PaaS”市场中,中国电信天翼云凭借行业云和全栈服务能力、渠道优势位居第一。10月17日,赛迪顾问发布的《2024中国央国企云市场研究报告》显示,2023年,在中国央国企云“IaaS+Pa…

舞台已就位!坐等AI玩家集结!

舞台已就位!坐等AI玩家集结!舞台已就位!坐等AI玩家集结!

Nuxt.js 应用中的 prepare:types 事件钩子详解

title: Nuxt.js 应用中的 prepare:types 事件钩子详解 date: 2024/11/8 updated: 2024/11/8 author: cmdragon excerpt: prepare:types 钩子为 Nuxt.js 开发者提供了灵活定制 TypeScript 配置和声明的能力。通过使用此钩子,开发者能够确保 TypeScript 配置和类型声明能够满…

线段树的好朋友,平衡复杂度的好帮手——多叉堆

多叉堆,和 另外一个 是好兄弟,在某些 dijkstra 中用于阳间地平衡复杂度。 本质上是控制堆的高度,用一个 \(V^{\frac 1 k}\) 叉树来维护堆,当元素的值减小时只需要 \(O(k)\),弹出最小值也只需要 \(O(k + V^{\frac{1}{k}})\),当 \(k\) 取 \(\ge 2\) 的常数(根据题目来)就…

BERT 微调实战

带着问题来学习BERT 的预训练过程是如何完成的,在预训练过程中,采用了哪两种任务?本次实战是用 SQuAD 数据集微调 BERT, 来完成我们的问答任务,你能否用 IMDB 影评数据集来微调 BERT,改进 BERT 的结果准确率?文章最后会公布问题的参考答案~一、BERT 简介 BERT 全称 Bidi…

视频智能分析网关视频分析网关区域人数统计检测算法探析

随着城市化进程的加快和公共安全管理需求的提升,对公共场所、工业区域等人流量密集场所的监控和管理变得尤为重要。传统的视频监控系统已经无法满足现代智能化管理的需求,市场迫切需要一种能够实现实时监控、智能分析和自动报警的高效解决方案。基于此,区域人数统计视频分析…

SDN实验报告

SDN上机实验 实验目的能够使用Mininet的实现网络拓扑构建;熟悉Open vSwitch交换机的基本配置;熟悉OpenFlow协议的通信原理掌握pox控制器的基本使用方法;掌握Ryu控制期的基本使用方法;掌握北向应用的基本开发方法实验环境 基础环境选择ubuntu-20.04.6-desktop-amd64 实验内容…

双11买ToDesk远程控制&云电脑,看这一篇就够了!

今年双十一各大商家实在是太卷了,预售定金满减凑单一堆花活。但小编发现ToDesk远程控制&云电脑的双十一活动不一般。 囊括了远程控制各种会员版本的年包优惠,云电脑的计时机包时机活动,充值还送钱,优惠力度大,而且直接减钱,不费脑子就拿下超值价格。小编给大家简单整理了…