#include<iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char **argv)
{
Mat src = imread("D:/meinv.jpg");
if (!src.data)
{
printf("Couldn't load the image......");
return -1;
}
namedWindow("源图像", CV_WINDOW_AUTOSIZE);
imshow("源图像", src);
int height = src.rows;
int width = src.cols;
int channels = src.channels();
Mat dst = Mat::zeros(src.size(),src.type()); //创建一个和原图像大小相同,类型相同,像素值为0的图像。
float alpha = 1.5; //设置参数
float beta = 0;
//对每个像素点的操作
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
if (channels == 3) //如果是彩色图像
{
dst.at<Vec3b>(i, j)[0] = saturate_cast<uchar>(alpha*(src.at<Vec3b>(i, j)[0]) + beta);
dst.at<Vec3b>(i, j)[1] = saturate_cast<uchar>(alpha*(src.at<Vec3b>(i, j)[1]) + beta);
dst.at<Vec3b>(i, j)[2] = saturate_cast<uchar>(alpha*(src.at<Vec3b>(i, j)[2]) + beta);
}
else if (channels == 1) //灰度图像
{
dst.at<uchar>(i,j) = saturate_cast<uchar>(alpha*(src.at<uchar>(i, j)) + beta);
}
}
}
imshow("dst_image", dst);
waitKey(0);
return 0;
}
调整图像亮度与对比度方法
最新推荐文章于 2022-01-24 19:45:30 发布