02 图像色彩空间转换
opencv知识点:
色彩空间转换函数 - cvtColor()
图像保存 - imwrite()
图像显示 - imshow()
本课解决的问题:
如何对图片进行色彩空间转换?
如何保存图像?
1.准备事项
创建头文件quickopencv.h
以及 源文件 quickdemo.cpp
,main.cpp
本课程只是为了方便演示,所以采用本种格式。
quickopencv.h
#pragma once
#include<opencv2/opencv.hpp>
using namespace cv;
/*顾名思义:快速的演示。随着课程的推进,里面会有各种demo*/
class QuickDemo {
public:
/*这就是第1个demo,色彩空间转换demo*/
void colorSpace_Demo(Mat& image);
/*
`
`
之后写的demo
·
·
*/
};
2.色彩空间转换+图像保存
接下来我们进行图像的色彩空间转换,并把转换后的图像保存下来。
色彩空间转换 cvtColor
cvtColor
色彩空间转换
共4个参数
第1个参数 输入
第2个参数 输出
第3个参数 色彩空间转换方式
第4个参数 通道数(不输入,则根据输入自动计算)
图像保存 imwrite
imwrite
图像保存
共3个参数
第1个参数 路径+文件名
第2个参数 输入
第3个参数 特定格式编码对(一般用不到)
色彩空间转换有4种常用的方式,本文只演示了两种。
彩色到灰度 - COLOR_BGR2GRAY
对应数值 6
灰度到彩色 - COLOR_GRAY2BGR
对应数值 8
BGR到HSV - COLOR_BGR2HSV
对应数值 40
HSV到BGR - COLOR_HSV2BGR
对应数值 54
main.cpp
#include "opencv2/opencv.hpp"
#include "quickopencv.h"
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
Mat src = imread("C:/Users/LZQ/Desktop/lena.png"); // B, G, R
if (src.empty()) {
printf("could not load image....\n");
return -1;
}
namedWindow("输入窗口", WINDOW_FREERATIO);
imshow("输入窗口", src);
QuickDemo qd;
qd.colorSpace_Demo(src); //重点
waitKey(0);
destroyAllWindows();
return 0;
}
quickdemo.cpp
#include "quickopencv.h"
#include <opencv2/dnn.hpp>
using namespace cv;
using namespace std;
void QuickDemo::colorSpace_Demo(Mat& image) {
Mat gray, hsv;
cvtColor(image, hsv, COLOR_BGR2HSV); // H 0 ~ 180, S, V
cvtColor(image, gray, COLOR_BGR2GRAY); //灰度
imshow("HSV", hsv); //显示HSV图像
imshow("灰度", gray); //显示灰度图像
// imwrite("D:/hsv.png", hsv); // 保存hsv
// imwrite("D:/gray.png", gray); // 保存灰度
}
quickopencv.h
#pragma once
#include <opencv2/opencv.hpp>
using namespace cv;
class QuickDemo { //快速的演示文件 class类
public:
void colorSpace_Demo(Mat& image);
};
原图:
灰度:
HSV:
标签:转换,灰度,图像,using,include,色彩 From: https://www.cnblogs.com/L707/p/17043899.html