在圖像處理中,調整圖像的亮度和對比度是非常常見的操作。通過調整亮度和對比度,可以改善圖像的視覺效果,使其更適合后續的處理或分析。本文將介紹如何使用C++和OpenCV庫來實現圖像亮度和對比度的調整。
在OpenCV中,可以通過以下公式來調整圖像的亮度和對比度:
[ \text{output}(x, y) = \alpha \times \text{input}(x, y) + \beta ]
其中: - (\alpha) 是對比度調整參數,通常大于0。 - (\beta) 是亮度調整參數,可以為正數或負數。
通過調整 (\alpha) 和 (\beta) 的值,可以實現對圖像亮度和對比度的調整。
首先,確保已經安裝了OpenCV庫,并在C++項目中導入OpenCV頭文件:
#include <opencv2/opencv.hpp>
#include <iostream>
使用OpenCV的imread
函數讀取圖像:
cv::Mat image = cv::imread("input.jpg");
if (image.empty()) {
std::cerr << "Error: Could not load image!" << std::endl;
return -1;
}
定義一個函數來調整圖像的亮度和對比度:
cv::Mat adjustBrightnessContrast(const cv::Mat& image, double alpha, int beta) {
cv::Mat adjustedImage;
image.convertTo(adjustedImage, -1, alpha, beta);
return adjustedImage;
}
在這個函數中,convertTo
函數用于調整圖像的亮度和對比度。alpha
參數控制對比度,beta
參數控制亮度。
調用上述函數并顯示調整后的圖像:
double alpha = 1.5; // 對比度調整參數
int beta = 50; // 亮度調整參數
cv::Mat adjustedImage = adjustBrightnessContrast(image, alpha, beta);
cv::imshow("Original Image", image);
cv::imshow("Adjusted Image", adjustedImage);
cv::waitKey(0);
如果需要保存調整后的圖像,可以使用imwrite
函數:
cv::imwrite("output.jpg", adjustedImage);
#include <opencv2/opencv.hpp>
#include <iostream>
cv::Mat adjustBrightnessContrast(const cv::Mat& image, double alpha, int beta) {
cv::Mat adjustedImage;
image.convertTo(adjustedImage, -1, alpha, beta);
return adjustedImage;
}
int main() {
cv::Mat image = cv::imread("input.jpg");
if (image.empty()) {
std::cerr << "Error: Could not load image!" << std::endl;
return -1;
}
double alpha = 1.5; // 對比度調整參數
int beta = 50; // 亮度調整參數
cv::Mat adjustedImage = adjustBrightnessContrast(image, alpha, beta);
cv::imshow("Original Image", image);
cv::imshow("Adjusted Image", adjustedImage);
cv::waitKey(0);
cv::imwrite("output.jpg", adjustedImage);
return 0;
}
通過使用OpenCV的convertTo
函數,我們可以輕松地調整圖像的亮度和對比度。本文介紹了如何在C++中使用OpenCV實現這一功能,并提供了完整的代碼示例。希望這篇文章能幫助你更好地理解和使用OpenCV進行圖像處理。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。