openCV实现定位RGB、HSV、YUV图像模型矩阵转化并打印输出各像素点的值保存txt自定义王者升级版

该博客详细介绍了RGB、HSV和YUV三种颜色模型的基本原理,并探讨了它们在计算机视觉中的应用。通过openCV库实现了图像的色彩空间转换,同时展示了如何获取和保存各像素点的值。内容涵盖了颜色理论、颜色亮度和饱和度等概念,以及RGB到HSV和YUV的转换过程。
摘要由CSDN通过智能技术生成

在这里插入图片描述
效果如图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

RGB基本原理

RGB色彩模式是工业界的一种颜色标准,是通过对红®、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。

二、rgb的原理
  RGB是从颜色发光的原理来设计定的,通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于两者亮度之总和,越混合亮度越高,即加法混合。

有色光可被无色光冲淡并变亮。如蓝色光与白光相遇,结果是产生更加明亮的浅蓝色光。知道它的混合原理后,在软件中设定颜色就容易理解了。

红、绿、蓝三盏灯的叠加情况,中心三色最亮的叠加区为白色,加法混合的特点:越叠加越明亮。

红、绿、蓝三个颜色通道每种色各分为255阶亮度,在0时"灯"最弱–是关掉的,而在255时"灯"最亮。当三色数值相同时为无色彩的灰度色,而三色都为255时为最亮的白色,都为0时为黑色。

RGB 颜色称为加成色,因为您通过将 R、G 和 B 添加在一起(即所有光线反射回眼睛)可产生白色。加成色用于照明光、电视和计算机 显示器 。例如,显示器通过红色、绿色和蓝色荧光粉发射光线产生颜色。绝大多数可视光谱都可表示为红、绿、蓝 (RGB) 三色光在不同比例和强度上的混合。这些颜色若发生重叠,则产生青、洋红和黄,其他的YUV,HSV如下。

颜色基本参数为:色相,色阶,饱和度。

色相,是用来区别颜色的标志,是光由于光波、频率的不同而产生的颜色性质。人们把易于识别的颜色分类,如红色、绿色,都叫色相。但是黑、白、灰,不成为色相。色相是在光谱上自然分割的结果,而黑、白、灰是各种中和、配色后产生的颜色。

色阶(明度),是指颜色的亮度指数,由物体反射出来光波的多少来量化。图像的色彩丰满度和精细度是由色阶决定的。最亮的定义为白色,最不亮的定义为黑色。色阶与色相无关,颜色色阶一般由两种情况:一种是同色相,不同明度,如红色,加白色或者加黑色后,能够产生不同的明亮层次。

饱和度(纯度),是只色彩的鲜艳程度,饱和度取决于颜色中“含色成分(色相)”和“消色成分(灰色)”之间的比例。含色成为越大,饱和度越高,反之越低。当饱和度为零时,就是灰色。任何色相饱和度趋近于零的时候,就产生灰色,这也是为什么灰色不成为色相。

从小我们学到的三原色是由红、黄、蓝基色组成,在印刷、绘画标准中,基础色纸张是白色的,采用消减型原理,理论上可以调配出除了三原色以外的任意颜色。

回到工业领域,计算机显示设备、电视机、手机的屏幕基础颜色是黑色,而且越黑越好。在黑色基础上,如果要想显示颜色,就要采用叠加型原理,因此采用的三原色就是红、绿、蓝,就是我们常说的RGB。而叠加原理,是要发光叠加的,这也是为什么在黑暗中,我们看不到消减原理产生的印刷品,却可以看见叠加原理产生的屏幕颜色。

由于基础色是黑色的叠加原理,如果三种颜色都没有,就是黑色#000000,如果三种颜色都是饱和的全部叠加在一起就是白色#FFFFFF,因此当R-G-B三种颜色,或者两种、甚至一种,以不同比例混合后,就可以产生任意多的颜色。
在这里插入图片描述

HSV基本原理:

由三个属性决定颜色,H、S、V分别是色彩、深度、明暗,按着图中方向的变化,其对应的颜色也会改变,三者也同样是有取值范围的,不同的是他的灰度图和取值范围, S = 0时,只有灰度,取值范围是角度:

色调H
用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;

饱和度s
饱和度S表示颜色接近光谱色的程度。通常取值范围为0%~100%,值越大,颜色越饱和。

明度V
明度表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)。

YUV基本原理

YUV(亦称YCrCb)是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),是PAL和SECAM模拟彩色电 视制式采用的颜色空间。
其中的Y、U和V几个字母不是英文单词的组合词,Y代表亮度,UV代表色差,U和V是构成彩色的两个分量。

在现代彩色电视系统中,通常采用三管彩色摄影机或彩色CCD摄影机进行取像,然后把取得的彩色图像信号经分色、分别放大校正后得到RGB,再经过矩阵变换电路得到亮度信号Y和两 个色差信号R-Y(即U)、B-Y(即V)。最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这种色彩的表示方法就是所谓的YUV色彩 空间表示。采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有 Y信号分量而没有U、V信号分量,那么这样表示的图像就是黑白灰度图像。

YUV主要用于优化彩色视频信号的传输,与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。
其中 “Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。“亮度”是透过RGB输入信号来建立的,方 法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面─色调与饱和度,分别用Cr和CB来表示。其中,Cr反映了输入信号红色部分 与RGB信号亮度值之间的差异。而CB反映的是RGB输入信号蓝色部分与RGB信号亮度值之同的差异。采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V分量,那么这样表示的图像就是黑白灰度图像。

源码如下:


//头文件-by Mr_haibao007
#include <stdio.h>
#include <tchar.h>
#include <opencv.hpp>	  
#include<iostream>
#include<opencv2/core/core.hpp>
#include "opencv2/imgproc.hpp"
#include "opencv2/video.hpp"
#include "opencv2/videoio.hpp"
#include "opencv2/highgui.hpp"
#include<opencv2/highgui/highgui.hpp>
#include <opencv2\imgproc\types_c.h>
#includ
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海宝7号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值