Opencv学习笔记(七) -- 图像的灰度化

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学习笔记(八) – 图像色彩空间转换

猜你喜欢

转载自blog.csdn.net/u014337397/article/details/80806767
今日推荐