一、概述
示例代码:利用简单的数学元素提升图像的亮度。
二、示例图像
三、代码示例
//图像像素点操作 #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char const *argv[]) { Mat input,output; input = imread("girl.jpg"); if(!input.data){ cout << "can't not found image"<<endl; return -1; } imshow("input",input); //获取图片的宽高 int height = input.rows; int width = input.cols; double alpha = 1.2; double beat =50; //按照原图的大小创建一个输出图像 output = Mat::zeros(input.size(),input.type()); //以下代码的意思是将input中的像素值取出,然后再经由数学运算赋值到output中 for(int y=0;y<height;y++){ for(int x = 0 ;x<width;x++){ //blue,saturate_cast<uchar>(value)确保值大小范围为0~255之间 output.at<Vec3b>(y,x)[0] = saturate_cast<uchar>(alpha*input.at<Vec3b>(y,x)[0]+beat); //green output.at<Vec3b>(y,x)[1] = saturate_cast<uchar>(alpha*input.at<Vec3b>(y,x)[1]+beat); //red output.at<Vec3b>(y,x)[2] = saturate_cast<uchar>(alpha*input.at<Vec3b>(y,x)[2]+beat); } } imshow("output",output); waitKey(0); return 0; }