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;
}

三、实验结果

Opencv开发笔记二:色彩空间转换

Opencv开发笔记二:色彩空间转换 Opencv开发笔记二:色彩空间转换

Opencv开发笔记二:色彩空间转换

Opencv开发笔记二:色彩空间转换