#include <istream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char **argv) {
Mat src, dst;
// 加载图片
src = imread("../../picture/bg1.webp", 1);
if (!src.data) {
printf("No image data \n");
return -1;
}
namedWindow("src", WINDOW_AUTOSIZE);
imshow("src", src);
int rows = src.rows;
int cols = src.cols;
dst = Mat::zeros(src.size(), src.type());
float alpha = 1.2;
float beta = 10;
for (int row = 0; row < rows; row++) {
for (int col = 0; col < cols; col++) {
if (src.channels() == 3) {
float a = src.at<Vec3b>(row, col)[0];
float b = src.at<Vec3b>(row, col)[1];
float c = src.at<Vec3b>(row, col)[2];
dst.at<Vec3b>(row, col)[0] = saturate_cast<uchar>(alpha * a + beta);
dst.at<Vec3b>(row, col)[1] = saturate_cast<uchar>(alpha * b + beta);
dst.at<Vec3b>(row, col)[2] = saturate_cast<uchar>(alpha * c + beta);
} else if (src.channels() == 1) {
float d = src.at<uchar>(row, col);
dst.at<uchar>(row, col) = saturate_cast<uchar>(alpha * d + beta);
}
}
}
namedWindow("dst", WINDOW_AUTOSIZE);
imshow("dst", dst);
// 等待按键
waitKey(0);
return 0;
}
