1.灰度图像
一幅完整的彩色图像是由多个通道组成的,如RGB、YUV或HSI等。
灰度图像通常是在单个电磁波频谱(如可见光)内测量每个像素的亮度得到的。用于显示的灰度图像通常用每个采样像素8位的非线性尺度来保存,这样可以有256级灰度。这种精度刚刚能够避免可见的条带失真,并且非常易于编程。
2.涉及函数
cvtColor
- 函数功能
调整图像的色彩空间 - 函数原型
CV_EXPORTS_W void cvtColor( InputArray src, OutputArray dst, int code, int dstCn = 0 );
- 相关参数
InputArray src – 原始图像
OutputArray dst – 转换后图像
int code – 转换编码
int dstCn = 0 – 目标图像通道数,如果取值为0,则由src和code决定 - 返回值
无 - 彩色图像与灰度图像编码
COLOR_BGR2GRAY – 将彩色图像转换为灰度图像
COLOR_GRAY2BGR – 将灰度图像转换为彩色图像
其余编码见后续介绍。
注意:
1.imread函数读取的彩色图像为BGR格式,而非RGB格式;
2.彩色图像与灰度图像的转换是不可逆的。
3.代码实例
- 代码说明
本例主要展示如何对两幅图像进行拼接操作。 - 测试平台
1.开发语言:C++
2.开发工具:VS2015
3.操作系统:Win7 X64 - 具体代码
#include <iostream>
using namespace std;
#include "cv.h"
#include "opencv2\opencv.hpp"
using namespace cv;
#if _DEBUG
#pragma comment(lib,"opencv_world340d.lib")
#else
#pragma comment(lib,"opencv_world340.lib")
#endif
int main()
{
Mat src = imread("D:\\OpencvTest\\lena.jpg");
if (src.data != NULL)
{
Mat grayImage;
cvtColor(src, grayImage, COLOR_BGR2GRAY);
Mat dstGrayToColorImage;
cvtColor(grayImage, dstGrayToColorImage, COLOR_GRAY2BGR);
imshow("原始图像", src);
imshow("灰度图像", grayImage);
imshow("灰度转彩色图像", dstGrayToColorImage);
cvWaitKey(0);
}
else
{
cout << "图片加载失败,请检查文件是否存在!" << endl;
}
getchar();
return 0;
}
- 输出截图
栏目导航
上一篇:Opencv学习笔记(六) – 图像的扣取
下一篇:Opencv学习笔记(八) – 图像色彩空间转换