源码:
quickopencv.h文件
#include <opencv2\opencv.hpp>
using namespace cv;
class QuickDemo
{
public:
void colorSpace_Demo(Mat &image);
};
quickdemo.cpp文件
#include <quickopencv.h>
void QuickDemo::colorSpace_Demo(Mat &image)
{
Mat gray, hsv;
cvtColor(image, hsv, COLOR_BGR2HSV);
cvtColor(image, gray, COLOR_BGR2GRAY);
imshow("hsv",hsv);
imshow("gray", gray);
imwrite("F:/OpenCV/material/hsv.png",hsv);
imwrite("F:/OpenCV/material/gray.png", gray);
}
main.cpp
#include <opencv2\opencv.hpp>
#include <iostream>
#include <quickopencv.h>
using namespace cv;
using namespace std;
int main(int argc, char ** argv)
{
Mat src = imread("F:/OpenCV/material/lena.jpg",IMREAD_UNCHANGED);
if (src.empty()) { printf("Error!"); return -1; }
namedWindow("input", WINDOW_FREERATIO);
imshow("input", src);
QuickDemo qd;
qd.colorSpace_Demo(src);
waitKey(0);
destroyAllWindows();
return 0;
}
HSV颜色模型:H–色调,S–饱和度,V–明度
1、颜色空间转换函数:cvtColor()
CV_EXPORTS_W void cvtColor( InputArray src, OutputArray dst, int code, int dstCn = 0 );
@功能:将图像从一个颜色空间转换为另一个颜色空间。
该函数将输入图像从一个颜色空间转换为另一个颜色空间。 在转换的情况下从RGB颜色空间,通道的顺序应该明确指定(RGB或BGR)。 请注意OpenCV中的默认颜色格式通常被称为RGB,但它实际上是BGR字节是相反的)。 所以一个标准(24位)彩色图像的第一个字节将是一个8位的蓝色组件时,第二个字节为绿色,第三个字节为红色。
@src:输入图像:8位无符号,16位无符号(CV_16UC…) ,或者单精度浮点。
@dst:DST输出与src相同大小和深度的图像。
@code:颜色空间转换代码(参见# colorconverversioncodes)
COLOR_BGR2GRAY – 6 彩色到灰度
COLOR_GRAY2BGR – 8 灰度到彩色
COLOR_BGR2HSV – 40 BGR到HSV
COLOR_HSV2BGR – 54 HSV到BGR
@dstCn :dstCn目标图像中的通道数; 如果该参数为0,则表示通道是自动从SRC和代码派生出来的。
2、图像保存函数:imwrite()
CV_EXPORTS_W bool imwrite( const String& filename, InputArray img,
const std::vector& params = std::vector());
@功能:将图像保存到指定文件。
@filename:文件名称
@img:(Mat或Mat的矢量)图像或需要保存的图像