2020-03-11 01:58:06 +00:00
|
|
|
#include "StdAfx.h"
|
|
|
|
#include "ImageMultiOutput.h"
|
|
|
|
|
|
|
|
|
|
|
|
ImageMultiOutput::ImageMultiOutput(void)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
ImageMultiOutput::~ImageMultiOutput(void)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
//void ImageMultiOutput::apply(cv::Mat& pDib,int side)
|
|
|
|
//{
|
|
|
|
// //throw std::logic_error("The method or operation is not implemented.");
|
|
|
|
//}
|
|
|
|
|
|
|
|
cv::Mat ImageMultiOutput::GetMultiFilterMat(cv::Mat &src,int channel)
|
|
|
|
{
|
|
|
|
return FilterColor(src,channel);
|
|
|
|
}
|
|
|
|
|
|
|
|
cv::Mat ImageMultiOutput::FilterColor(cv::Mat image,short channel)
|
|
|
|
{
|
|
|
|
cv::Mat dstImage(image.rows,image.cols,CV_8UC1);
|
|
|
|
|
|
|
|
//int pixelSize = image.depth();
|
|
|
|
int channels = image.channels();
|
|
|
|
if(channel > channels -1){
|
|
|
|
return dstImage;
|
|
|
|
}
|
|
|
|
if ( ( channel == 3 ) && ( channels != 4 ) && ( channels != 8 ))
|
|
|
|
{
|
|
|
|
return dstImage;
|
|
|
|
}
|
|
|
|
if ( channels <= 4 )
|
|
|
|
{
|
|
|
|
int srcOffset = image.step - image.cols* channels ;
|
|
|
|
int dstOffset = dstImage.step - dstImage.cols;
|
|
|
|
unsigned char* src = image.data;
|
|
|
|
unsigned char* dst = dstImage.data;
|
|
|
|
src += channel;
|
|
|
|
|
|
|
|
for ( int y = 0; y < image.rows; y++ )
|
|
|
|
{
|
|
|
|
for ( int x = 0; x < image.cols; x++, src += channels , dst++ )
|
|
|
|
{
|
2021-04-06 01:31:21 +00:00
|
|
|
//unsigned short pix = *src;
|
|
|
|
//if(pix >=130){
|
|
|
|
// pix = 255;
|
|
|
|
//}
|
|
|
|
//*dst = pix;
|
|
|
|
if (*src >= 130)
|
|
|
|
*dst = 255;
|
|
|
|
else
|
|
|
|
*dst = *src;
|
2020-03-11 01:58:06 +00:00
|
|
|
}
|
|
|
|
src += srcOffset;
|
|
|
|
dst += dstOffset;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return dstImage;
|
|
|
|
}
|