opencvsharp对图像进行亮度补偿效果和预想效果不一致什么原因
public Mat unevenLightCompensation(Mat img,PictureBox pb,int blocksize)
{
Mat temp = img.Clone();
double avg_pixel = Cv2.Mean(temp)[0];
int block_rows = (int)Math.Ceiling((double)img.Rows / blocksize);
int block_cols = (int)Math.Ceiling((double)img.Cols / blocksize);
Mat new_img = new Mat(new Size(block_rows, block_cols), MatType.CV_32FC1,new Scalar(0));
for (int i = 0; i < block_rows; i++)
{
for (int j = 0; j < block_cols; j++)
{
int left = j * blocksize;
int right = (j + 1) * blocksize > temp.Cols ? temp.Cols : (j + 1) * blocksize;
int up = i * blocksize;
int down = (i + 1) * blocksize > temp.Rows ? temp.Rows : (i + 1) * blocksize;
Mat roi = temp[new OpenCvSharp.Range(up, down), new OpenCvSharp.Range(left, right)];
double roi_avg = Cv2.Mean(roi)[0];
new_img.Set(i, j, roi_avg);
}
}
new_img = new_img - avg_pixel;
Mat new_img2=new Mat();
Cv2.Resize(new_img, new_img2, temp.Size(), 0, 0, InterpolationFlags.Cubic);
new_img2.ConvertTo(new_img2, MatType.CV_8UC1);
Mat new_src = new Mat();
temp.ConvertTo(new_src, MatType.CV_32FC1);
Mat dst = new_src - new_img2;
dst.ConvertTo(dst, MatType.CV_8UC1);
pb.Image = BitmapConverter.ToBitmap(dst);
return dst;
}
处理完后的图像为一片黑色,亮度补偿完全没有效果
想要找出问题出现详细解释及处理方案