赞
踩
#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如何对输入图像进行颜色空间转换。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。