mirror of http://192.168.1.51:8099/lmh188/twain3.0
99 lines
2.5 KiB
C++
99 lines
2.5 KiB
C++
|
#include "ImageMulti.h"
|
||
|
#include "ImageApplyHeaders.h"
|
||
|
|
||
|
IMageMulti::IMageMulti(int multiType,int thre)
|
||
|
{
|
||
|
m_multiType = multiType;
|
||
|
m_thre = thre;
|
||
|
}
|
||
|
|
||
|
IMageMulti::~IMageMulti(void)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
std::vector<cv::Mat> IMageMulti::apply(cv::Mat& pDib)
|
||
|
{
|
||
|
std::vector<cv::Mat> retMats;
|
||
|
if (pDib.empty())
|
||
|
return retMats;
|
||
|
retMats.push_back(pDib);
|
||
|
switch (m_multiType)
|
||
|
{
|
||
|
case ALL:
|
||
|
{
|
||
|
if (pDib.channels() == 3){
|
||
|
cv::Mat dst;
|
||
|
cv::cvtColor(pDib, dst,cv::COLOR_BGR2GRAY);
|
||
|
retMats.push_back(dst);
|
||
|
}
|
||
|
cv::Mat dstThre;
|
||
|
cv::cvtColor(pDib, dstThre,cv::COLOR_BGR2GRAY);
|
||
|
//cv::threshold(dstThre, dstThre, m_thre, 255, cv::THRESH_BINARY);
|
||
|
CImageApplyBWBinaray bw(CImageApplyBWBinaray::ThresholdType::THRESH_BINARY);
|
||
|
bw.apply(dstThre, 0);
|
||
|
//cv::adaptiveThreshold(dstThre,dstThre,255,cv::ADAPTIVE_THRESH_GAUSSIAN_C,cv::THRESH_BINARY,25,5);
|
||
|
if (!dstThre.empty())
|
||
|
{
|
||
|
retMats.push_back(dstThre);
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
case COLORGRAY:
|
||
|
{
|
||
|
if (pDib.channels() == 3) {
|
||
|
cv::Mat dstGray;
|
||
|
cv::cvtColor(pDib, dstGray, cv::COLOR_BGR2GRAY);
|
||
|
retMats.push_back(dstGray);
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
case COLORBW:
|
||
|
{
|
||
|
if (pDib.channels() == 3) {
|
||
|
cv::Mat dstGray;
|
||
|
cv::cvtColor(pDib, dstGray, cv::COLOR_BGR2GRAY);
|
||
|
CImageApplyBWBinaray bw(CImageApplyBWBinaray::ThresholdType::THRESH_BINARY);
|
||
|
bw.apply(dstGray, 0);
|
||
|
// cv::Mat dstBW;
|
||
|
// cv::adaptiveThreshold(dstGray,dstBW,255,cv::ADAPTIVE_THRESH_GAUSSIAN_C,cv::THRESH_BINARY,25,5);
|
||
|
retMats.push_back(dstGray);
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
case GRAYBW://pDib should be GreyImage(channels() == 1)
|
||
|
{
|
||
|
cv::Mat dst = pDib.clone();
|
||
|
CImageApplyBWBinaray bw(CImageApplyBWBinaray::ThresholdType::THRESH_BINARY);
|
||
|
bw.apply(dst, 0);
|
||
|
// cv::Mat dstBW;
|
||
|
// cv::adaptiveThreshold(pDib,dstBW,255,cv::ADAPTIVE_THRESH_GAUSSIAN_C,cv::THRESH_BINARY,25,5);
|
||
|
if (!dst.empty())
|
||
|
{
|
||
|
retMats.push_back(dst);
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
return retMats;
|
||
|
}
|
||
|
|
||
|
std::vector<cv::Mat> IMageMulti::apply(cv::Mat& pDib, int multitype)
|
||
|
{
|
||
|
m_multiType = multitype;
|
||
|
return apply(pDib);
|
||
|
}
|
||
|
|
||
|
std::vector<cv::Mat> IMageMulti::apply(std::vector<cv::Mat>& pDib, int multitype)
|
||
|
{
|
||
|
std::vector<cv::Mat> m_rets;
|
||
|
m_multiType = multitype;
|
||
|
for (auto& node : pDib)
|
||
|
{
|
||
|
auto nodes = apply(node);
|
||
|
m_rets.insert(m_rets.end(), nodes.begin(), nodes.end());
|
||
|
}
|
||
|
return m_rets;
|
||
|
}
|