RGB轉換成灰度圖像


RGB轉換成灰度圖像的一個常用公式是:
Gray = R*0.299 + G*0.587 + B*0.114
//灰度轉換函數*******
//第一個參數image輸入的彩色RGB圖像的引用;
//第二個參數imageGray是轉換后輸出的灰度圖像的引用;
//*******************************************************

#include <opencv2\opencv.hpp>
using namespace cv;
void ConvertRGB2GRAY(const Mat &image, Mat &imageGray);

int main()
{
	Mat src = imread("catGuitar.jpg");
	Mat grayImage;
	ConvertRGB2GRAY(src, grayImage);
	imshow("gray image", grayImage);
	imwrite("grayimage.jpg", grayImage);
	waitKey(0);
	return 0;
}

void ConvertRGB2GRAY(const Mat &image, Mat &imageGray)
{
	if (!image.data || image.channels() != 3)
	{
		return;
	}
	//創建一張單通道的灰度圖像
	imageGray = Mat::zeros(image.size(), CV_8UC1);
	//取出存儲圖像像素的數組的指針
	uchar *pointImage = image.data;
	uchar *pointImageGray = imageGray.data;
	//取出圖像每行所占的字節數
	size_t stepImage = image.step;
	size_t stepImageGray = imageGray.step;
	for (int i = 0; i < imageGray.rows; i++)
	{
		for (int j = 0; j < imageGray.cols; j++)
		{
			pointImageGray[i*stepImageGray + j] =
				(uchar)(0.114*pointImage[i*stepImage + 3 * j] +
					0.587*pointImage[i*stepImage + 3 * j + 1] +
					0.299*pointImage[i*stepImage + 3 * j + 2]);
		}
	}
}

測試圖:
在這里插入圖片描述
效果圖:
在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM