#include<opencv2\opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main(int argc, char* argv[]) {
Mat src, dst;
src = imread("D:/CAXA/练习/f1.jpg");
if (!src.data)
{
cout << "could not load image" << endl;
return -1;
}
cvtColor(src, src, CV_BGR2GRAY);
namedWindow("input image", CV_WINDOW_AUTOSIZE);
imshow("input image", src);
dst = Mat::zeros(src.size(), src.type());
int heigh = src.rows;
int width = src.cols;
int v = src.channels();
float alpha = 1.5;
float beta = 30;
Mat m1;
src.convertTo(m1, CV_32F);
for (int row = 0; row < heigh; row++)
{
for (int col = 0; col < width; col++)
{
if (v == 3) {
float b = m1.at<Vec3f>(row, col)[0];
float g = m1.at<Vec3f>(row, col)[1];
float r = m1.at<Vec3f>(row, col)[2];
dst.at<Vec3b>(row, col)[0] = saturate_cast<uchar>(b*alpha + beta);
dst.at<Vec3b>(row, col)[1] = saturate_cast<uchar>(g*alpha + beta);
dst.at<Vec3b>(row, col)[2] = saturate_cast<uchar>(r*alpha + beta);
}
else if (v == 1)
{
float b = src.at<uchar>(row, col);
dst.at<uchar>(row, col) = saturate_cast<uchar>(b*alpha + beta);
}
}
}
imshow("convert image", dst);
waitKey(0);
return 0;
}