图像颜色空间变换
RGB颜色模型
空间立体模式,三个通道叠加,形成颜色
第一个通道是蓝色 B 分量 blue
第二个通道是绿色 G 分量 green
第三个通道是红色 R 分量 red
三种存储图像空间
- 8U 0-255
- f 32F 0-1 映射为 0-255 强制类型转换 当 <0 时,全部为黑色,当>0 时全部为黑色
- d 64F 0-1
图像数据类型的转换
converTo()
void cv::Mat::converTo(OutputArray m,
int rtype,
alpha =
double 1,
double beta = 0) const
- m: 转换后输出图像
- rtype:转换图像的数据类型
- alpha:转换过程中的缩放因子
- beta:转换过程中的偏置因子
HSV颜色模型
- H 色度 什么颜色 (Hue)
- S 饱和度 深浅 (Saturation)
- V 亮度 亮暗 (Value)
GRAY颜色模型
颜色转换
cvColor()
void cv::cvColor(InputArray src,
OutputArray dst,
int code,
int dstCn = 0)
- src:待转换颜色模型的原始图像
- dst:转后颜色模型后的目标图像
- code:颜色转换的空间标志
如由RGB空间转换为HSV空间
- dstCn:目标图像中的通道数,如果参数为0, 则从src和代码中自动导出参数
第四个通道 图像的透明度
代码展示
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("./lena.png");
Mat img32;
img.convertTo(img32, CV_32F, 1 / 255.0, 0);
Mat HSV, HSV32;
cvtColor(img, HSV, COLOR_BGR2HSV);
cvtColor(img32, HSV32, COLOR_BGR2HSV);
Mat gray0, gray1;
cvtColor(img, gray0, COLOR_BGR2GRAY);
cvtColor(img, gray1, COLOR_RGB2GRAY);
}