内置程序调节进度条会产生宽度或高度为负情况,将代码改为rect即可正常运行,示例如下:
rect.Top = histogramImage.Rows;
rect.Left = j * binW;
rect.Width = binW;
rect.Height = (int)(scaledHistogram.Get<float>(j));
histogramImage.Rectangle(
rect,
color,
-1);
程序主要函数和运行逻辑分析
亮度和对比的数值在0-200之前,
调节后以100为0点设置正负,根据正负情况求参数,代码如下:
if (contrast > 0)
{
double delta = 127f * contrast / 100f;
alpha = 255f / (255f - delta * 2);
beta = alpha * (brightness - delta);
}
else
{
double delta = -128f * contrast / 100;
alpha = (256f - delta * 2) / 255f;
beta = alpha * brightness + delta;
}
然后调用ConvertTo函数实现变换和显示工作。
src.ConvertTo(modifiedSrc, MatType.CV_8UC3, alpha, beta);
需要注意的是,程序应该是可以输出直方图相关参数的,运行后的确是有一个histogram窗口,但窗口内容为空,由于暂时没有相对如何应用,先不修复这个bug。