Opencv 圖像增強和亮度調整<6>


圖像處理算子是帶有一幅或多幅輸入圖像、產生一幅輸出圖像的函數。

圖像變換可分為以下兩種:點算子(像素變換)鄰域算子

圖像增強和亮度調整屬於像素變換范疇常見變換方法是:g(i,j) = \alpha \cdot f(i,j) + \beta

其中 i 和 j屬於行和列

#define WIN_NAME "輸出圖像"
Mat srcImage;
Mat dstImage;
int contrast = 20, bright = 20;
void onChange(int, void*)
{
 for (int i = 0; i < srcImage.rows; i++)
 {
  for (int j = 0; j < srcImage.cols; j++)
  {
   //也可以用for循環
   dstImage.at<Vec3b>(i, j)[0] = saturate_cast<uchar>(srcImage.at<Vec3b>(i, j)[0] * contrast*0.01 + bright);
   dstImage.at<Vec3b>(i, j)[1] = saturate_cast<uchar>(srcImage.at<Vec3b>(i, j)[1] * contrast*0.01 + bright);
   dstImage.at<Vec3b>(i, j)[2] = saturate_cast<uchar>(srcImage.at<Vec3b>(i, j)[2] * contrast*0.01 + bright);
  }
 }
// srcImage.convertTo(dstImage, -1, 0.01, 20);
 imshow("原圖", srcImage);
 imshow(WIN_NAME, dstImage);
}
void main()
{
 srcImage = imread("E:\\欣奕華\\項目\\OPENCV\\ContrastBright\\ConBrightness\\1.jpg", 1);
 dstImage.create(srcImage.size(), srcImage.type());
 namedWindow(WIN_NAME, WINDOW_AUTOSIZE);
 createTrackbar("對比度", WIN_NAME, &contrast, 200, onChange, 0);
 createTrackbar("亮  度", WIN_NAME, &bright, 200, onChange, 0);
 onChange(contrast, 0);//回調函數初始化
 onChange(bright, 0);
 waitKey();
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM