C# EmguCV 修改图片对比度、亮度
1、公式
g(x) = k*f(x)+b
f(x) 原图片的像素点颜色
g(x)改变对比度后的像素点颜色
k 对比度改变系数
b 像素点增加的亮度
C# 代码实现
Mat pic = CvInvoke.Imread(path);
int k = 2;
int b = 20;
for(int i=0;i<pic.Rows;i++)
{
for(int j=0;j<pic.Cols;j++)
{
int B = (int)(k * pic.Data[i,j,0]+b);
int G = (int)(k * pic.Data[i,j,1]+b);
int R = (int)(k * pic.Data[i,j,2]+b);
}
}
当然代码中还需要对B、R、G的范围进行一下限制,通常情况下三个通道的分量值都在0-255之间,因为我这里是手敲的代码所以就省略了。
说明一下 pic.Data[i,j,0] 中 i 和 j 表示当前像素点的坐标,第三个数字是蓝绿红的索引值。