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學習筆記(八) – 圖像色彩空間轉換

發佈了69 篇原創文章 · 獲贊 70 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章