อบรมสอน Visual studio และประมวลผลภาพด้วย Open CV ตอนที่ 2

อบรมสอน Visual studio และประมวลผลภาพด้วย Open CV ตอนที่ 2

// example : noise generated
#include <opencv2/opencv.hpp>
#include <random>
using namespace cv;
using namespace std;
void salt(Mat image, int n)
{
	default_random_engine generator;
	uniform_int_distribution<int> randomRow(0, image.rows - 1);
	uniform_int_distribution<int> randomCol(0, image.cols - 1);
	int i, j;
	for (int k = 0; k < n; k++)
	{
		i = randomCol(generator);
		j = randomRow(generator);
		if (image.type() == CV_8UC1)
		{
			image.at<uchar>(j, i) = 255;
		}
		else if (image.type() == CV_8UC3)
		{
			image.at<Vec3b>(j, i)[0] = 255;
			image.at<Vec3b>(j, i)[1] = 255;
			image.at<Vec3b>(j, i)[2] = 255;
		}
	}
}

void pepper(Mat image, int n)
{
	default_random_engine generator;
	uniform_int_distribution<int> randomRow(0, image.rows - 1);
	uniform_int_distribution<int> randomCol(0, image.cols - 1);
	int i, j;
	for (int k = 0; k < n; k++)
	{
		i = randomCol(generator);
		j = randomRow(generator);
		if (image.type() == CV_8UC1)
		{
			image.at<uchar>(j, i) = 0;
		}
		else if (image.type() == CV_8UC3)
		{
			image.at<Vec3b>(j, i)[0] = 0;
			image.at<Vec3b>(j, i)[1] = 0;
			image.at<Vec3b>(j, i)[2] = 0;
		}
	}
}


int main() {
	Mat image = imread("lena.png", IMREAD_GRAYSCALE);
	//Mat input_image = imread("histogram.png", IMREAD_GRAYSCALE);
	
	imshow("Input image", image);
	
	//pepper(image, 3000);
	salt(image, 3000);

	imshow("Processed Image", image);
	waitKey(0);

	return 0;
}
//// ========================================================
Pages: 1 2 3 4 5
Related Posts

Protected: ARV Hackathon 2021

Enter your password to view comments.

Create Account



Log In Your Account