mirror of http://192.168.1.51:8099/lmh188/twain3.0
43 lines
943 B
C++
43 lines
943 B
C++
|
#include "ImageApplyDetachNoise.h"
|
||
|
#include "ImageProcess_Public.h"
|
||
|
|
||
|
CImageApplyDetachNoise::CImageApplyDetachNoise(int noise)
|
||
|
: m_noise(noise)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
CImageApplyDetachNoise::~CImageApplyDetachNoise(void)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
void CImageApplyDetachNoise::apply(cv::Mat& pDib, int side)
|
||
|
{
|
||
|
(void)side;
|
||
|
if (pDib.empty()||pDib.channels() != 1)
|
||
|
return;
|
||
|
|
||
|
cv::Mat mask;
|
||
|
cv::threshold(pDib, mask, 127, 255, cv::THRESH_BINARY_INV);
|
||
|
|
||
|
std::vector<std::vector<cv::Point>> contours;
|
||
|
std::vector<cv::Vec4i> h;
|
||
|
hg::findContours(mask, contours, h);
|
||
|
|
||
|
for (const std::vector<cv::Point>& contour : contours)
|
||
|
if (contourArea(contour) < m_noise)
|
||
|
fillConvexPoly(pDib, contour, cv::Scalar(255));
|
||
|
}
|
||
|
|
||
|
void CImageApplyDetachNoise::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++;
|
||
|
}
|
||
|
}
|