2.图像色彩空间转换
- 色彩空间转换函数-cvtColor
- COLOR_BGR2GRAY = 6 彩色到灰色
- COLOR_GRAY2BGR = 8 灰色到彩色
- COLOR_BGR2HSV = 40 BGR到HSV
- COLOR_HSV2BGR = 54 HSV到BGR
- 图像保存 - imwrite
- 第一个参数是图像保存路径
- 第二个参数是图像内存对象
#include <opencv2/opencv.hpp>
class ImgcolorProcess
{
public:
void colorspaceConversion(cv::Mat& image); // 定义图像颜色空间转换函数
};
void ImgcolorProcess::colorspaceConversion(cv::Mat& image)
{
cv::Mat gray, hsv; // 创建用于存储灰度图和HSV图的Mat对象
cvtColor(image, hsv, cv::COLOR_BGR2HSV); // 将BGR图像转换为HSV图像
cvtColor(image, gray, cv::COLOR_BGR2GRAY); // 将BGR图像转换为灰度图像
cv::imshow("HSV", hsv); // 在窗口中显示HSV图像
cv::imshow("GRAY", gray); // 在窗口中显示灰度图像
cv::imwrite("E:/Softwares/OpenCV_Study/lena_hsv.png", hsv); // 将HSV图像保存为文件
cv::imwrite("E:/Softwares/OpenCV_Study/lena_gray.png", gray); // 将灰度图像保存为文件
}
int main()
{
cv::Mat src = cv::imread("E:/Softwares/OpenCV_Study/lena.png", cv::IMREAD_UNCHANGED);
cv::namedWindow("inputwindow", cv::WINDOW_AUTOSIZE);
if (src.empty())
{
printf("could not load image...");
return -1;
}
cv::imshow("inputwindow", src);
ImgcolorProcess qd; // 创建ImgcolorProcess类的实例
qd.colorspaceConversion(src); // 调用颜色空间转换函数
cv::waitKey(0);
cv::destroyAllWindows();
return 0;
}
-
H: 0-180 S和V: 0-255 H和S通道表示颜色 S通道可以调整图像饱和度 V通道决定图像亮度
-
在
colorspaceConversion
方法中,cvtColor
函数是一个多参数函数:cvtColor(image, hsv, cv::COLOR_BGR2HSV);
image
: 这是输入的BGR格式图像,即要转换的原始图像。hsv
: 这是输出的HSV格式图像,即转换后的图像将存储在这个Mat对象中。cv::COLOR_BGR2HSV
: 这是指定颜色空间转换的标志。在这里,cv::COLOR_BGR2HSV
表示将BGR颜色空间转换为HSV颜色空间。这个参数告诉OpenCV如何对输入图像进行颜色空间转换。