栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Opencv

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Opencv

文章目录
      • 一. 色彩空间介绍
        • ① RGB/BGR色彩空间
        • ② 为什么Opencv中采用的是BGR
        • ③ HSV色彩空间
      • 二.色彩空间转换
        • ① cvtColor()函数原型
        • ② 颜色空间转换案例

一. 色彩空间介绍 ① RGB/BGR色彩空间

计算机色彩显示器和彩色电视机显示色彩的原理一样,都是采用R,G,B相加混色的原理,通过发射出三种不同强度的电子束,使得屏幕内侧覆盖的红,吕蓝磷光材料发光而产生色彩.这种色彩的表示方法称为RGB色彩空间表示.在RGB颜色空间中,任意色光F都可以用RGB三色不同分量的相加混合而成:

F = r[R] + r[G] +r[B]

RGB色彩空间还可以用一个三维的立方体来描述.当三基色分量都为0(最弱)时,混合为黑色光,当三基色都为k(最大,值由存储空间决定)时混合为白色光.

opencv中R,G,B三通道取值范围均为[0,255]

② 为什么Opencv中采用的是BGR

历史原因: 因为opencv诞生的时候,那个时候的相机开发和软件开发商使用的都是BGR通道.

③ HSV色彩空间

HSV使用一个倒锥体或者是圆柱体来表示


HSV表示彩色图像的方式由三部分组成:

  • Hue: 色调,色相
  • Saturation: 饱和度,色彩纯净度
  • Value:明度

Hue:
Hue用角度度量,取值范围是0~360°,表示色彩信息,即所处的光谱的颜色的位置. 表示如下:

颜色圆环上所有的颜色都是光谱上的颜色,从红色开始按逆时针方向旋转,Hue=0表示红色,Hue=120表示绿色,Hue=240表示蓝色,在GRB中,颜色由三个值共同决定,比如黄色为(255,255,0),在HSV中,黄色只有一个值决定,Hue=60即可.

HSV 圆柱体的半边横截面 (Hue=60):

其中水平方向表示饱和度,饱和度表示颜色接近光谱色的程度.饱和度越高,说明颜色越深,越接近光谱色.饱和度越低,说明颜色越浅,越接近白色.饱和度为0表示纯白色.取值范围为0-100%,值越大,颜色越饱和.

竖直方向表示明度,决定颜色空间中颜色的明暗程序,明度越高,表示颜色越明亮,范围是0-100%.明度为0表示纯黑色(此时颜色最暗)

可以通俗的理解为:
在Hue一定的情况下,饱和度减小,就是往光谱中添加白色,光谱色所占的比例也在减小,饱和度减少到0,表示光谱所占的比例为零,导致整个颜色呈现白色.

明度减小,就是往光谱中添加黑色,光谱色所占用比例也在减小,明度减为0,表示光谱色所占的比例为0,导致整个颜色呈现黑色.

HSV对用户来说是一种比较直观的颜色模型.我们可以很轻松地得到单一的颜色,即指定颜色角H,并让V=S=1,然后通过向其中加入黑色和白色来得到我们需要的颜色.增加黑色可以减小V而S表示不变,同样增加白色尅减小S而V不变.

注意:
在Opencv中hsv的取值范围分别是: H(0~180) S:(0-255),V:(0-255);

HSV颜色基本对照表

二.色彩空间转换 ① cvtColor()函数原型
void cvtColor(InputArray src,OutputArray dst,int code,int dstCn=0);

参数:

  • src: 输入图像,要进行颜色转换的原图像,可以是Mat实例对象.
  • dst: 输出图像,转换后的图像,可以是Mat的实例对象.
  • code:转换的代码和标识,就是将什么类型的图片转换为什么类型的图片
  • dstCn:目标图像通道数,如果取值为0,则由src和code决定

code第三个参数常用的值:

取值说明
COLOR_BGR2GRAY彩色的BGR通道图像转换为灰度图像
COLOR_GRAY2BGR灰度图像转换为彩色的BGR通道图像
COLOR_BGR2HSVBGR通道彩色图像转换为HSV通道图像
COLOR_HSV2BGRHSV通道图像转换为BGR通道图像
② 颜色空间转换案例
#include"MyOpencv.h"
string imagePath = IMAGE_PATH + "\green.jpg";


int main()
{
	Mat src = imread(imagePath, IMREAD_COLOR);
	if (src.empty())
	{
		cout << "文件读取失败,请确认路径是否正确: " << imagePath << endl;
	}
	else
	{
		Mat imageRGB, imageGray, imageHSV;
		// 转换成RGB格式图片
		cvtColor(src, imageRGB, COLOR_BGR2RGB);
		// 转换成灰度图像
		cvtColor(src, imageGray, COLOR_BGR2GRAY);
		// 转换成HSV图像
		cvtColor(src, imageHSV, COLOR_BGR2HSV);

		imshow("Original", src);
		waitKey(0);
		imshow("RGB", imageRGB);
		waitKey(0);
		imshow("Gray", imageGray);
		waitKey(0);
		imshow("HSV", imageHSV);
		waitKey(0);
	}
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/835299.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号