44 lines
881 B
C++
44 lines
881 B
C++
#include "ImageApplyAutoContrast.h"
|
|
#include <vector>
|
|
using namespace std;
|
|
using namespace cv;
|
|
|
|
CImageApplyAutoContrast::CImageApplyAutoContrast()
|
|
{
|
|
}
|
|
|
|
CImageApplyAutoContrast::~CImageApplyAutoContrast()
|
|
{
|
|
}
|
|
|
|
void CImageApplyAutoContrast::apply(cv::Mat& pDib, int side)
|
|
{
|
|
(void)side;
|
|
if (pDib.empty()) return;
|
|
|
|
if(pDib.channels() == 1)
|
|
cv::equalizeHist(pDib,pDib);
|
|
else
|
|
{
|
|
std::vector<cv::Mat> mats(3);
|
|
cv::split(pDib,mats);
|
|
for(size_t i = 0; i < mats.size(); i++)
|
|
if(!mats[i].empty())
|
|
cv::equalizeHist(mats[i], mats[i]);
|
|
cv::merge(mats,pDib);
|
|
}
|
|
}
|
|
|
|
void CImageApplyAutoContrast::apply(std::vector<cv::Mat> &mats, bool isTwoSide)
|
|
{
|
|
(void)isTwoSide;
|
|
int i = 0;
|
|
for (cv::Mat& var : mats) {
|
|
if (i != 0 && isTwoSide == false)
|
|
break;
|
|
if (!var.empty())
|
|
apply(var, 0);
|
|
i++;
|
|
}
|
|
}
|