<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          OpenCV圖像對比度亮度調(diào)整

          共 2679字,需瀏覽 6分鐘

           ·

          2021-07-26 18:32

          點擊下方卡片,關注“新機器視覺”公眾號

          視覺/圖像重磅干貨,第一時間送達

          來源:洞庭余人

          理論依據(jù)

          首先了解一下算子的概念,一般的圖像處理算子都是一個函數(shù),它接受一個或多個輸入圖像,并產(chǎn)生輸出圖像。下面是算子的一般形式。

          g(x) = (h(f(x)) 或者 g(x) = h(f0(x)......fn(x))

          圖像亮度和對比度的操作,其實屬于圖像處理變換中比較簡單的一種-點操作(point operators)。點操作有一個特點:僅僅根據(jù)輸入像素值來計算相應的輸出像素值。這類算子包括亮度(brightness)和對比度(contrast)調(diào)整、顏色校正(color correction)和變換(transformations)。

          兩種最常見的點操作是乘上一個常數(shù)(對比度的調(diào)節(jié))以及加上一個常數(shù)(亮度值的調(diào)節(jié))。公式如下:

          g(x) = a * f(x) + b

          • f(x) 表示原圖像像素。

          • g(x) 表示輸出圖像像素。

          • 參數(shù) a( a > 0)被稱為增益,常用來控制圖像的對比度。

          • 參數(shù) b 通常稱為偏置(bias),常用來控制圖像的亮度。

          進一步,我們這樣改寫這個公式:

          g(i,j) = a * f(i,j) + b

          其中i,j 表示像素位于第 i 行和第 j 列,這個公式可以用來作為我們在 OpenCV 中控制圖像亮度和對比度的理論公式。

          示例程序

          #include <opencv2/core/core.hpp>
          #include <opencv2/highgui/highgui.hpp>
          using namespace cv;
          #define WINDOW_NAME "Tracker"
          const int MAX_VALUE = 100;
          int contrastValue; //對比度
          int brightnessValue; //亮度
          Mat src;
          Mat dstImage;

          void onTrack(int, void *) {

             for (int row = 0; row < src.rows; row++) {
                 //列
                 for (int col = 0; col < src.cols; col++) {

                     Vec3b pixels = src.at<Vec3b>(row, col);
                     dstImage.at<Vec3b>(row, col)[0] = saturate_cast<uchar>((contrastValue * 0.01) * pixels[0] + brightnessValue);
                     dstImage.at<Vec3b>(row, col)[1] = saturate_cast<uchar>((contrastValue * 0.01) * pixels[1] + brightnessValue);
                     dstImage.at<Vec3b>(row, col)[2] = saturate_cast<uchar>((contrastValue * 0.01) * pixels[2] + brightnessValue);
                 }
             }
             imshow(WINDOW_NAME,dstImage);
             imwrite("../opencv_contrast_brightness.jpg",dstImage);}int main() {

             //讀取圖片

             src = imread("../lena.png");
             dstImage = Mat::zeros(src.size(), src.type());
             //顯示圖片
             imshow("Tracker", src);

             contrastValue = 60;
             brightnessValue = 50;

             namedWindow(WINDOW_NAME, WINDOW_NORMAL);

             createTrackbar("Contrast", WINDOW_NAME, &contrastValue, MAX_VALUE, onTrack);
             createTrackbar("Brightness", WINDOW_NAME, &brightnessValue, MAX_VALUE, onTrack);

             onTrack(contrastValue, 0);
             onTrack(brightnessValue, 0);

             waitKey(0);
             return 0;}

          —版權(quán)聲明—

          僅用于學術分享,版權(quán)屬于原作者。

          若有侵權(quán),請聯(lián)系微信號:yiyang-sy 刪除或修改!


          —THE END—
          瀏覽 64
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人人看人人撸 | 欧美日韩操逼视屏 | 伦中文亚洲 | 天天干天天久 | 久久免费视频一区二区三区四区 |