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