内置程式調節進度條會産生寬度或高度為負情況,将代碼改為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。