#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; }