加载图片
string imangPath = @"I:\OpenCvSharp学习\4.jpg";//原图加载路径Mat LoadMat = new Mat(imangPath, ImreadModes.AnyColor);if (LoadMat.Empty()){Console.WriteLine("加载错误");return;}Mat ModifyMat = new Mat();LoadMat.CopyTo(ModifyMat);//Copy图像Window InputWindows = new Window("Input", WindowMode.Normal, LoadMat);//显示原图
获得每个像素点的值
for (int i = 0; i < ModifyMat.Rows; i++){for (int j = 0; j < ModifyMat.Cols; j++){Vec3b vec = new Vec3b();vec.Item0 = (byte)ModifyMat.At<Vec3b>(i, j)[0];vec.Item1 = (byte)ModifyMat.At<Vec3b>(i, j)[1];vec.Item2 = (byte)ModifyMat.At<Vec3b>(i, j)[2];Console.WriteLine(vec.Item0.ToString() + ',' + vec.Item1.ToString() + ',' + vec.Item2.ToString());}}
将每个像素点都减去一个数,达到降低亮度的目的
Mat ModifyNat1 = new Mat();ModifyMat.CopyTo(ModifyNat1);for (int i = 0; i < ModifyMat.Rows; i++){for (int j = 0; j < ModifyMat.Cols; j++){Vec3b vec = new Vec3b();vec.Item0= (byte)ByteCase((ModifyMat.Get<Vec3b>(i, j).Item0 - 80));vec.Item1 = (byte)ByteCase((ModifyMat.Get<Vec3b>(i, j).Item1 - 80));vec.Item2 = (byte)ByteCase((ModifyMat.Get<Vec3b>(i, j).Item2 - 80));ModifyNat1.Set(i, j, vec);}}Window OutWindows2 = new Window("Output2", WindowMode.Normal, ModifyNat1);

将每个像素都加上一个数,达到增加亮度的目的
Mat ModifyNat2 = new Mat();ModifyMat.CopyTo(ModifyNat2);for (int i = 0; i < ModifyMat.Rows; i++){for (int j = 0; j < ModifyMat.Cols; j++){Vec3b vec = new Vec3b();vec.Item0 = (byte)ByteCase((ModifyMat.Get<Vec3b>(i, j).Item0 + 40));vec.Item1 = (byte)ByteCase((ModifyMat.Get<Vec3b>(i, j).Item1 + 40));vec.Item2 = (byte)ByteCase((ModifyMat.Get<Vec3b>(i, j).Item2 + 40));ModifyNat2.Set(i, j, vec);}}Window OutWindows3 = new Window("Output3", WindowMode.Normal, ModifyNat2);

方法ByteCase:
将相素的数值进行加减的时候有超出规格的时候,用以下方法保证数值都在0-255
private static int ByteCase(int n){if (n <= 0){return 0;}else if (n > 255){return 255;}else{return n;}}
