Opencv开发笔记二:色彩空间转换
一、相关API介绍
cv::cvtColor 是色彩空间转换函数,cvtColor的功能是把图像从一个彩色空间转换到另外一个色彩空间,
有三个参数,第一个参数表示源图像、第二参数表示色彩空间转换之后的图像、第三个参数表示源和目标色彩空间如:
COLOR_BGR2HLS 、COLOR_BGR2GRAY,COLOR_BGR2HSV
void cvtColor( InputArray src, OutputArray dst, int code, int dstCn = 0 )
param1:src 原图像
param2:dst 目标图像
param3:转换编码 COLOR_BGR2HLS 、COLOR_BGR2GRAY,COLOR_BGR2HSV
cv::namedWindos
namedWindos功能是创建一个OpenCV窗口,它是由OpenCV自动创建与释放,你无需取销毁它。
void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE);
WINDOW_AUTOIZ由下面结构体组成
enum { WINDOW_NORMAL = 0x00000000, // the user can resize the window (no constraint) / also use to switch a fullscreen window to a normal size
WINDOW_AUTOSIZE = 0x00000001, // the user cannot resize the window, the size is constrainted by the image displayed
WINDOW_OPENGL = 0x00001000, // window with opengl support
WINDOW_FULLSCREEN = 1, // change the window to fullscreen
WINDOW_FREERATIO = 0x00000100, // the image expends as much as it can (no ratio constraint)
WINDOW_KEEPRATIO = 0x00000000 // the ratio of the image is respected
};
二、实现程序
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char **argv){
Mat src; //定义一个存放图片数据的数组
src = imread("./1.png", 1); // Loads a multi-page image from a file convert to gray
if (src.empty()) // 判断图片是否存放在src中
{
cout << "can not read an image" << endl;
return -1;
}
namedWindow("input image", CV_WINDOW_AUTOSIZE); // 给窗口命名: 1 窗口名称 2 窗口显示方式
imshow("input image", src); // cv库下的imshow方法,来显示图片:1 窗口名称 2 src
//-----------------
Mat dst_gray,dst_hsv, dst_hls, dst_rgb, dst_yuv;
cvtColor(src, dst_gray, CV_BGR2GRAY);
cvtColor(src, dst_hsv, CV_BGR2HSV);
cvtColor(src, dst_hls, CV_BGR2HLS);
cvtColor(src, dst_rgb, CV_BGR2RGB);
cvtColor(src, dst_yuv, CV_BGR2YUV);
imshow("output dst_gray", dst_gray);
imshow("output dst_hsv", dst_hsv);
imshow("output dst_rgb", dst_rgb);
imshow("output dst_yuv", dst_yuv);
//-----------------
waitKey(0); // 一直显示图片,直到检测到按键按下停止显示:waitKey(int delay = 0) delay延时的时间
return 0;
}
三、实验结果