#include "qtest1105.h"
#include <QtWidgets/QApplication>
#include <opencv2\core\utility.hpp>
#include <opencv2\imgproc.hpp>
#include <opencv2\highgui.hpp>
#include<string>
#include <iostream>
#include <limits>
using namespace std;
using namespace cv;
Mat img = imread("C:\\Users\\hasee\\Desktop\\cat2.jpg");
void showHistoCallback(int state, void* userData);
void equlizeCallback(int state, void* userData);
void lomoCallback(int state, void* userData);
int main()
{
namedWindow("Input");
//createButton("ss", showHistoCallback, NULL, QT_PUSH_BUTTON, 0);
//createButton("直方图均衡化",equlizeCallback,NULL,QT_PUSH_BUTTON,0);
imshow("Input", img);
Mat result;
const double exponential_e = exp(1.0);
Mat lut(1, 256, CV_8UC1);
for (int i = 0; i < 256; i++) {
float x = (float)i / 256.0;
lut.at<uchar>(i) = cvRound(256 * (1 / (1 + pow(exponential_e, -(x - 0.5) / 0.1))));
}
vector<Mat> bgr;
split(img, bgr);
LUT(bgr[2], lut, bgr[2]);
merge(bgr, result);
imshow("result01", result);
Mat halo(img.rows, img.cols, CV_32FC3, Scalar(0.3, 0.3, 0.3));
imshow("halo", halo);
circle(halo, Point(img.cols / 2, img.rows / 2), img.cols / 3, Scalar(1, 1, 1), -1);
blur(halo, halo, Size(img.cols / 3, img.cols));
Mat resultf;
result.convertTo(resultf, CV_32FC3);
imshow("resultf", resultf);
multiply(resultf, halo, resultf);
imshow("result02", result);
resultf.convertTo(result, CV_8UC3);
imshow("LOMO", result);
waitKey(0);
return 0;
}
#include <QtWidgets/QApplication>
#include <opencv2\core\utility.hpp>
#include <opencv2\imgproc.hpp>
#include <opencv2\highgui.hpp>
#include<string>
#include <iostream>
#include <limits>
using namespace std;
using namespace cv;
Mat img = imread("C:\\Users\\hasee\\Desktop\\cat2.jpg");
void showHistoCallback(int state, void* userData);
void equlizeCallback(int state, void* userData);
void lomoCallback(int state, void* userData);
int main()
{
namedWindow("Input");
//createButton("ss", showHistoCallback, NULL, QT_PUSH_BUTTON, 0);
//createButton("直方图均衡化",equlizeCallback,NULL,QT_PUSH_BUTTON,0);
imshow("Input", img);
Mat result;
const double exponential_e = exp(1.0);
Mat lut(1, 256, CV_8UC1);
for (int i = 0; i < 256; i++) {
float x = (float)i / 256.0;
lut.at<uchar>(i) = cvRound(256 * (1 / (1 + pow(exponential_e, -(x - 0.5) / 0.1))));
}
vector<Mat> bgr;
split(img, bgr);
LUT(bgr[2], lut, bgr[2]);
merge(bgr, result);
imshow("result01", result);
Mat halo(img.rows, img.cols, CV_32FC3, Scalar(0.3, 0.3, 0.3));
imshow("halo", halo);
circle(halo, Point(img.cols / 2, img.rows / 2), img.cols / 3, Scalar(1, 1, 1), -1);
blur(halo, halo, Size(img.cols / 3, img.cols));
Mat resultf;
result.convertTo(resultf, CV_32FC3);
imshow("resultf", resultf);
multiply(resultf, halo, resultf);
imshow("result02", result);
resultf.convertTo(result, CV_8UC3);
imshow("LOMO", result);
waitKey(0);
return 0;
}