#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++ ) { unsigned short pix = *src; if(pix >=130){ pix = 255; } *dst = pix; } src += srcOffset; dst += dstOffset; } } return dstImage; }