void addNoise(InputArray src_, OutputArray dest_, const double sigma, const double sprate, const int seed) { if(seed!=0) cv::theRNG().state = seed; if (dest_.empty() || dest_.size() != src_.size() || dest_.type() != src_.type()) dest_.create(src_.size(), src_.type()); Mat src = src_.getMat(); Mat dest = dest_.getMat(); if (src.channels() == 1) { addNoiseMono(src, dest, sigma); if (sprate != 0)addNoiseSoltPepperMono(dest, dest, sprate, seed); return; } else { vector<Mat> s(src.channels()); vector<Mat> d(src.channels()); split(src, s); for (int i = 0; i < src.channels(); i++) { addNoiseMono(s[i], d[i], sigma); if (sprate != 0)addNoiseSoltPepperMono(d[i], d[i], sprate, seed); } cv::merge(d, dest); } if (seed != 0) cv::theRNG().state = cv::getTickCount(); }
void addNoise(Mat&src, Mat& dest, double sigma, double sprate) { if(src.channels()==1) { addNoiseMono(src,dest,sigma); if(sprate!=0)addNoiseSoltPepperMono(dest,dest,sprate); return; } else { vector<Mat> s(src.channels()); vector<Mat> d(src.channels()); split(src,s); for(int i=0;i<src.channels();i++) { addNoiseMono(s[i],d[i],sigma); if(sprate!=0)addNoiseSoltPepperMono(d[i],d[i],sprate); } cv::merge(d,dest); } }