雕爷学编程【雕爷学编程】MicroPython动手做(08)——零基础学MaixPy之识别颜色


_本文原题:【雕爷学编程】MicroPython动手做(08)——零基础学MaixPy之识别颜色
早上用百度搜了一下“颜色识别” , 多少有了一点大致的概念 , 还是老办法 , 动手做 , 多实验 , 往前走 , 还请各位老师多多指点 。
OpenCV(百度百科)
是一个基于BSD许可(开源)发行的跨平台计算机视觉库 , 可以运行在Linux、Windows、Android和Mac OS操作系统上 。 它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成 , 同时提供了Python、Ruby、MATLAB等语言的接口 , 实现了图像处理和计算机视觉方面的很多通用算法 。 OpenCV用C++语言编写 , 它的主要接口也是C++语言 , 但是依然保留了大量的C语言接口 。 该库也有大量的Python、Java and MATLAB/OCTAVE(版本2.5)的接口 。 这些语言的API接口函数可以通过在线文档获得 。 如今也提供对于C#、Ch、Ruby,GO的支持 。
OpenCV于1999年由Intel建立 , 如今由Willow Garage提供支持 。 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库 , 可以运行在Linux、Windows和Mac OS操作系统上 。 它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成 , 同时提供了Python、Ruby、MATLAB等语言的接口 , 实现了图像处理和计算机视觉方面的很多通用算法 。 OpenCV 拥有包括 500 多个C函数的跨平台的中、高层 API 。 它不依赖于其它的外部库——尽管也可以使用某些外部库 。 OpenCV 为Intel? Integrated Performance Primitives(IPP)提供了透明接口 。 这意味着如果有为特定处理器优化的 IPP 库 , OpenCV 将在运行时自动加载这些库 。(注:OpenCV 2.0版的代码已显著优化 , 无需IPP来提升性能 , 故2.0版不再提供IPP接口)
雕爷学编程【雕爷学编程】MicroPython动手做(08)——零基础学MaixPy之识别颜色
本文插图
OpenCV概述
其全称是Open source Computer Vision Library , 开放源代码计算机视觉库 。 也就是说 , 它是一套关于计算机视觉的开放源代码的API函数库 。 这也就意味着:
(1)不管是科学研究 , 还是商业应用 , 都可以利用它来作开发;
(2)所有API函数的源代码都是公开的 , 你可以看到其内部实现的程序步骤;
(3)你可以修改OpenCV的源代码 , 编译生成你需要的特定API函数 。 但是 , 作为一个库 , 它所提供的 , 仅仅是一些常用的 , 经典的 , 大众化的算法的API 。
一个典型的计算机视觉算法 , 应该包含以下一些步骤:
(1)数据获取(对OpenCV来说 , 就是图片);
(2)预处理;
(3)特征提取;
(4)特征选择;
(5)分类器设计与训练;
(6)分类判别;
而OpenCV对这六个部分 , 分别(记住这个词)提供了API 。
雕爷学编程【雕爷学编程】MicroPython动手做(08)——零基础学MaixPy之识别颜色
本文插图
基于OpenCV的颜色识别
彩色模型
数字图像处理中常用的采用模型是RGB(红 , 绿 , 蓝)模型和HSV(色调 , 饱和度 , 亮度) , RGB广泛应用于彩色监视器和彩色视频摄像机 , 我们平时的图片一般都是RGB模型 。 而HSV模型更符合人描述和解释颜色的方式 , HSV的彩色描述对人来说是自然且非常直观的 。
HSV模型
HSV模型中颜色的参数分别是:色调(H:hue) , 饱和度(S:saturation) , 亮度(V:value) 。 由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model) 。
色调(H:hue):用角度度量 , 取值范围为0°~360° , 从红色开始按逆时针方向计算 , 红色为0° , 绿色为120°,蓝色为240° 。 它们的补色是:黄色为60° , 青色为180°,品红为300°;
饱和度(S:saturation):取值范围为0.0~1.0 , 值越大 , 颜色越饱和 。


推荐阅读