目标识别基础 OpenMV 图片对象

背景介绍:
Sugar 在《图像处理基础》一文中说过:“ 在图像里做目标识别的过程就是:不停地取出画面里的每一帧图像 , 在图像里的每一帧画面上找目标的过程 。”
本篇就说一说怎样在一帧画面上识别目标的 。
image 模块
上一篇《从 hello world 读懂怎样玩》中说到通过 .() 从摄像头获取一帧图像 , 也就是一张当时的图片 。得到这个图片后 , 就可以通过 image 模块里的方法处理图片了 , 原因是:
通过官方文档可知:.() 返回一个 image 类的对象 。要使用 image 模块提供的方法 , 按的规矩就要:
import image
image 可以在当前的图像帧上做各种各样的操作 , 下面先说一说要进行这些操作需要的基础知识 。
像素坐标
的像素坐标系如下:
与其他( 等)图像处理系统一样 , 像素坐标系的原点在图像的“左上角” , x、y 轴的正方向如上图 。
image 模块方法示例:打标记
一、 API 介绍
1、image.clear() 清除图像帧上的所有像素点;
2、image.(x, y, w, h) 以 (x, y) 为起点 , 画宽 w 高 h 的方形 。
二、代码及现象
通过这个示例 , 非常直观地感受到了 image.clear() 的作用:消除了整个图像帧的像素 , 把图像变黑了 。如果我们想保留图片 , 在拍摄到的视频画面上画这个方块 , 那么应该这么写代码:
每获取一帧图像画一个方块 , 不用擦除之前画的方块 , 因为每次 .() 的时候图像帧一更新就把上一次画的方块冲掉了(这里要细细体会一下搞明白哦) 。
三、再说两个画画 API 接下来的例子用:
(1) image.(x,y) 以像素坐标 (x, y) 为中心画个十字 。
(2) img.(x, y, ) 以像素坐标 (x, y) 为圆心 ,  为直径画一个圆 。
只要了解的基本知识 , 对编程就非常简单 , 专注点在视觉及图像内容上而非语法上就对了 。如果对语法还不熟悉的话可以看 Sugar 的入门系列推文 。这里要说明的一点是:就算语法非常简单 , 作为一种编程语言 , 学习其语法也会有一段枯燥的时间 。这一点从 Sugar 写入门系列推文的时候阅读量不大就能看得出来 。相对于其他语言来讲算是入门阶段相当短的了 , 只要熬过那么一小段时间 , 收获将是其乐无穷的 。
image 模块方法示例:找色块
一、API 介绍
1、image.(Lab色彩空间下的阀值元组)用于寻找当前图像帧里的目标色块 , 官方 API 是这样写的:
2、.(False) 关闭自动白平衡 。
这是个模块的设置 , 之所以放在这里说是因为这个设置与寻找色块相关 , 官方文档里是这么说的:
Sugar 对艺术略知一二并不精通 , 如果问“自动白平衡”是什么 , 还是下面这两位大佬解释得好:
艺术大佬一 , 来自知乎 , 请手动搜索下图中的标题:
艺术大佬二 , 直接点这个题目《咳咳咳!你真的搞懂白平衡了吗?》

目标识别基础  OpenMV 图片对象

文章插图
Sugar 的做法是:官方文档让关咱就关了 , 不多问 。哈哈 , 别学 Sugar 这样不求甚解啊 , 多了解是好的 。
二、image.blob 类介绍
上面的 image.() 返回一个 image.blob 对象 , 下面就来看一下这个对象里都包含哪些信息 。
信息含意
从左上角开始顺时针方向 , 色块 4 个角的 (x,y) 像素坐标