day2-色彩空间转换函数cvtColar()实现,与图像保存函数IMwrite
知识补充:三种常见色彩空间——RGB、GRAY、HSV颜色识别(详情点击链接)
函数:
void cvtColor( InputArray src, OutputArray dst, int code, int dstCn = 0 );
可以实现RGB颜色向HSV,HSI等颜色空间转换。也可以转换为灰度图。
参数 | 说明 |
---|---|
src | 输入图像,即要进行颜色空间变换的原图像,可以是Mat类 |
dst | 输出图像,即进行颜色空间变换后存储图像,也可以Mat类 |
code | 转换的代码或标识,即在此确定将什么制式的图片转换成什么制式的图片 |
dstCn | 默认为0,目标图像通道数,如果取值为0,则由src和code决定 |
例1
cvtColor(image, hsv, COLOR_BGR2HSV);//Mat image, hsv;RGB转HSV
cvtColor(image, gray, COLOR_BGR2GRAY);//HSV转Gray灰度
bool imwrite( const String& filename, InputArray img,const std::vector& params = std::vector());
参数 | 说明 |
---|---|
filename | 文件名(要保存的位置,注意:你要保存图片为哪种格式,就带什么后缀) |
img | 要保存的图像 |
params | 表示为特定格式保存的参数编码 其中JPEG:表示图像的质量(取值 0-100);PNG:表示压缩级别(取值 0-9);PPM,PGM,PBM:表示文件以二进制还是纯文本方式存储 取值 0或 1 |
例2
imwrite("...\\HSV\\1.png",hsv);//Mat hsv imwrite图像保存
// 将hsv保存到...\\HSV\\1.png路径 保存格式为png
代码:
quickopencv.h
#pragma once
#include <opencv2\highgui.hpp>
#include <opencv2\imgproc.hpp>
using namespace cv;
//定义类
class QuickDemo{
public:
void colorSpace_Demo(Mat &image);//色彩空间转换函数2021-12-24
};
QuickDemo.cpp
#include <opencv2\highgui.hpp>
#include <opencv2\imgproc.hpp>
#include<quickopencv.h>
#include <iostream>
void QuickDemo::colorSpace_Demo(Mat &image)
{
//cvtColor 色彩空间转换函数
Mat gray, hsv;//灰度 hsv色彩空间
cvtColor(image, hsv, COLOR_BGR2HSV);//HSV颜色空间:H S V 三个通道, H:颜色0-180 ,S:颜色0-255 ,V:亮度 0-255
cvtColor(image, gray, COLOR_BGR2GRAY);//cvtColor色彩空间转换函数
imshow("HSV", hsv);
imshow("gray",gray);
imwrite("...\\HSV\\1.png",hsv);//imwrite图像保存
imwrite("...\\gray\\1.png",gray);
}
OpencvTest.cpp
#include <iostream>
#include <opencv2\highgui.hpp>
#include <opencv2\imgproc.hpp>
#include <quickopencv.h>
using namespace cv;
using namespace std;
int main()
{
Mat scr = imread("...\\image\\1.jpg");//打开一张图
if (!scr.data == 1)//判空
return -1;
namedWindow("窗口1", WINDOW_NORMAL);//创建 WINDOW_FREERATIO窗口
imshow("窗口1",scr);//在创建的窗口显示原图像
QuickDemo qd;
qd.colorSpace_Demo(scr);//色彩转换 转换成灰度图像和
waitKey(0);
return 0;
}
RGB原始图像
HSV图像
Gray灰度图像