mirror of http://192.168.1.51:8099/lmh188/twain3
73 lines
1.7 KiB
C++
73 lines
1.7 KiB
C++
#include "ImageMulti.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);
|
|
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);
|
|
cv::Mat dstBW;
|
|
cv::adaptiveThreshold(dstGray,dstBW,255,cv::ADAPTIVE_THRESH_GAUSSIAN_C,cv::THRESH_BINARY,25,5);
|
|
retMats.push_back(dstBW);
|
|
}
|
|
}
|
|
break;
|
|
case GRAYBW://pDib should be GreyImage(channels() == 1)
|
|
{
|
|
cv::Mat dstBW;
|
|
cv::adaptiveThreshold(pDib,dstBW,255,cv::ADAPTIVE_THRESH_GAUSSIAN_C,cv::THRESH_BINARY,25,5);
|
|
if (!dstBW.empty())
|
|
{
|
|
retMats.push_back(dstBW);
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return retMats;
|
|
}
|