twain3/ImageProcess/ImageApplyAutoContrast.cpp

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++;
}
}