天天看點

OpenCV#10 brightness亮度contrast對比度調節

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

繼續閱讀