1
0
Files
CLAHE/clahe.cpp
T
2020-01-21 21:23:45 +01:00

51 lines
1.3 KiB
C++

#include "clahe.h"
#include <QDebug>
CLAHE::CLAHE()
{
_clahe = cv::createCLAHE();
}
void CLAHE::loadFile(const QString &path)
{
cv::Mat tmp;
tmp = cv::imread(path.toStdString(), cv::IMREAD_COLOR | cv::IMREAD_ANYDEPTH);
double scale = tmp.depth()==CV_8U ? 1.0/255 : 1.0/65535;
tmp.convertTo(tmp, CV_32F, scale);
cv::cvtColor(tmp, tmp, cv::COLOR_BGR2Lab);
cv::split(tmp, _image);
_image[0].convertTo(_lumImage, CV_16U, 655.35);
double min, max;
cv::minMaxLoc(_image[0], &min, &max);
qDebug() << scale << min << max;
}
void CLAHE::saveFile(const QString &path)
{
}
void CLAHE::apply(float clipLimit, int kernelSize)
{
cv::Mat lum;
_clahe->setClipLimit(clipLimit);
_clahe->setTilesGridSize(cv::Size(kernelSize, kernelSize));
_clahe->apply(_lumImage, lum);
//lum = _lumImage;
lum.convertTo(_image[0], CV_32F, 1.0/655.35);
double min, max;
cv::minMaxLoc(_image[0], &min, &max);
qDebug() << min << max;
}
QPixmap CLAHE::getImage() const
{
cv::Mat tmp;
cv::merge(_image, 3, tmp);
cv::cvtColor(tmp, tmp, cv::COLOR_Lab2RGB);
tmp.convertTo(tmp, CV_8U, 255);
QImage ret(tmp.data, tmp.cols, tmp.rows, tmp.step, QImage::Format_RGB888);
//ret.bits();//perform deep copy of tmp.data pointer
return QPixmap::fromImage(ret);
}