源码
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
void salt(Mat img, int n);
int main()
{
Mat srcImg = imread("lena.jpg");
imshow("原图",srcImg);
salt(srcImg,5000);
imshow("彩色椒盐", srcImg);
waitKey(5000);
cin.get();
}
void salt(Mat img , int n) {
for (int k = 0; k < n; k++)
{
int i = rand() % (img.rows-20)+4;
int j = rand() % (img.cols-20)+4;
if (img.type() == CV_8UC1)
{
img.at<uchar>(i, j) = 255;
}
else if (img.type() == CV_8UC3)
{
if (i % 3 == 0) {
img.at<Vec3b>(i, j)[0] = 255;
img.at<Vec3b>(i, j)[1] = 0;
img.at<Vec3b>(i, j)[2] = 0;
}
else if (i % 3 == 1) {
img.at<Vec3b>(i, j)[0] = 0;
img.at<Vec3b>(i, j)[1] = 255;
img.at<Vec3b>(i, j)[2] = 0;
}
else if (i % 3 == 2) {
img.at<Vec3b>(i, j)[0] = 0;
img.at<Vec3b>(i, j)[1] = 0;
img.at<Vec3b>(i, j)[2] = 255;
}
}
}
cout << "hello" << endl;
}
输出
原图
@author T.Li 转载请标明来处,本人保留所有权。