小编也是刚刚入门开始学习OpenCV,顺便就开始做笔记啦
有写错的地方希望大家纠正啊
话不多说,直接上代码
void noiseImage(Mat& inputImage, Mat& outputImage,int num)
{
//参数准备
outputImage = inputImage.clone(); //拷贝实参到临时变量
int nRows = outputImage.rows; //行数
int nCols = outputImage.cols; //列数
int x, y;
for (int i = 0; i < num; i++) {//num个噪声
int x = rand() % nRows; //不能超出行数和列数
int y = rand() % nCols;
if ((x + y) % 2 == 0) {
outputImage.at<Vec3b>(x, y)[0] = 0;
outputImage.at<Vec3b>(x, y)[1] = 0;
outputImage.at<Vec3b>(x, y)[1] = 0;
}
else {
outputImage.at<Vec3b>(x, y)[0] = 255;
outputImage.at<Vec3b>(x, y)[1] = 255;
outputImage.at<Vec3b>(x, y)[1] = 255;
}
}
}
注意:必须是彩色图像才可以
如果是灰度图,把上述的三通道改为单通道即可
这里使用at方法加入椒盐噪声,加入多少个噪声点由参数num决定 加入椒噪声就使得该点的像素值为 0 加入盐噪声就改变该店的像素值为255 至于改变的点,以及哪些加入椒噪声,哪些加入盐噪声,完全都是随机的,看懂代码就好了
好啦,这一片的分享就到这里