OpenCV2:第七章 图像处理

一.简介

灰度图(灰阶图),把白色到黑色之间分为256阶灰度

彩色图有RGB三个分量,假设图是800*800像素,那么就有三个800*800的矩阵分别代表RGB

 二值化处理设定阈值,在阈值中的像素值变为1(白色),在阈值外的像素值变为0(黑色)

二.灰度化

1.实现

cv::Mat srcImage;
cv::Mat srcGray;
cv::cvtColor(srcImage,srcGray,CV_RGB2GRAY);

2.原理

(1)浮点算法

Gray=R*0.3+G*0.59+B*0.11

(2)整数方法

Gray=(R*30+G*59+B*11)/100

(3)移位方法

 Gray=(R*76+G*151+B*28)>>8;

(4)平均值法

Gray=(R+G+B)/3

(5)仅取绿色

 Gray=G

三.二值化

cv::Mat imgGray;
cv::Mat result;

cv::threshold(imgGray,result,100,255,CV_THRESH_BINARY);

四.加入噪声

void salt(cv::Mat image,int n){
 
	int i,j;
 
	for(int k=0;k<n;k++){
		i=std::rand()%image.cols;  //行数
		j=std::rand()%image.rows;  //列数
 
		if(image.type()==CV_8UC1){
			//灰度图像
			image.at<uchar>(j,i)=255;
		}
		else if(image.type()==CV_8UC3){
			//彩色图像
			image.at<cv::Vec3b>(j,i)[0]=255;
			image.at<cv::Vec3b>(j,i)[1]=255;
			image.at<cv::Vec3b>(j,i)[2]=255;
 
		}
 
	}
 
}
//调用
int main()
{
	
	cv::Mat imag1=cv::imread("a.jpg");
	
	salt(imag1,3000);
 
	cv::namedWindow("Image");
	cv::imshow("Image",imag1);
 
 
	cv::waitKey(0);
 
	system("pause");
	return 0;
}

猜你喜欢

转载自www.cnblogs.com/k5bg/p/11078142.html