测试小工具3——白平衡和颜色空间转换

    进行图像处理时,有的物体表面会反光,为了减少光对图像处理的影响,一般会进行白平衡和颜色空间的转换,下面是先进性白平衡,然后将图像由RGB空间转换成HSV、YCrCb空间的小程序。


#include<opencv.hpp>
#include<iostream>

using namespace std;
using namespace cv;

void WhiteBlance(Mat& src)
{
	vector<Mat> imageRGB;
	split(src, imageRGB);



	//求原始图像的RGB分量的均值  
	double R, G, B;
	B = mean(imageRGB[0])[0];
	G = mean(imageRGB[1])[0];
	R = mean(imageRGB[2])[0];

	//需要调整的RGB分量的增益  
	double KR, KG, KB;
	KB = (R + G + B) / (3 * B);
	KG = (R + G + B) / (3 * G);
	KR = (R + G + B) / (3 * R);

	//调整RGB三个通道各自的值  
	imageRGB[0] = imageRGB[0] * KB;
	imageRGB[1] = imageRGB[1] * KG;
	imageRGB[2] = imageRGB[2] * KR;

	//RGB三通道图像合并  
	merge(imageRGB, src);
}

int main()
{

	
	Mat pic = imread("测试.jpg");

	Mat picWhiteBalance;

	Mat picHsv;
	Mat picYCrCb;

	
	picWhiteBalance = pic.clone();

	//白平衡
	WhiteBlance(picWhiteBalance);

	//HSV颜色空间转换
	cvtColor(picWhiteBalance, picHsv, CV_BGR2HSV);

	//YCrCb颜色空间转换
	cvtColor(picWhiteBalance, picYCrCb, COLOR_BGR2YCrCb);


	imshow("原始图像", pic);

	imshow("白平衡", picWhiteBalance);

	imshow("HSV", picHsv);

	imshow("YCrCb", picYCrCb);

	waitKey(0);

	return 0;
}


效果图:


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值