openCV 图片灰度处理

int main()
{
	Mat img = imread("C:/Users/xiandou/Desktop/study_pdf/demojpg/cv.jpg");//放置一张图片用于测试,这里写图片的绝对路径
	// 在窗口中显示 
	//imshow("source", img);

	Mat gray;

	printf("%d,%d,%d",img.rows,img.cols,img.channels());

	

	// openCV 转灰度图像
	//cvtColor(img,gray,COLOR_BGRA2GRAY);

	//imshow("gray", gray);
	//imwrite("c:/users/xiandou/desktop/study_pdf/demojpg/gray.jpg", gray);


	// 图像处理像素点 转灰度图像

	//for (int i = 0; i < img.rows; i++) {

	//	//获取当前行的首地址 

	//	uchar* start_pixels =  img.ptr<uchar>(i);

	//	for (int j = 0; j < img.cols; j++) {
	//		uchar b = start_pixels[0];
	//		uchar g = start_pixels[1];
	//		uchar r = start_pixels[2];

	//		// 公式计算 f = 0.11R + 0.59G + 0.30B 最大 255 ,


	//		uchar gray = 0.11f*r + 0.59f*g + 0.30f*b;

	//		start_pixels[0] = gray;
	//		start_pixels[1] = gray;
	//		start_pixels[2] = gray;

	//		start_pixels += 3;

	//	}


	//}



	for (int i = 0; i < img.rows; i++) {

		//获取当前行的首地址 

		uchar* start_pixels = img.ptr<uchar>(i);

		for (int j = 0; j < img.cols; j++) {
			uchar b = start_pixels[0];
			uchar g = start_pixels[1];
			uchar r = start_pixels[2];

			// 公式计算 f = 0.11R + 0.59G + 0.30B 最大 255 ,

			 
			uchar gray = 0.11f*r + 0.59f*g + 0.30f*b;
			// 加深亮度 处理
			/*start_pixels[0] = saturate_cast<uchar>(1.2f * b);
			start_pixels[1] = saturate_cast<uchar>(1.2f * g);
			start_pixels[2] = saturate_cast<uchar>(1.2f * r); 
			*/
			
			// 底片效果
			start_pixels[0] = 255 - b;
			start_pixels[1] = 255 - g;
			start_pixels[2] = 255 - r;
			

			start_pixels += 3;

		}


	}

	imshow("gray", img);

	imwrite("c:/users/xiandou/desktop/study_pdf/demojpg/gray1.jpg", img);

	waitKey(0);
}

 

其中 : 

cvtColor(img,gray,COLOR_BGRA2GRAY);  是opencv 图像转灰度图处理函数 

 

 

// 下边代码 是通过对像素 的处理 图片转为灰度图 

 

 

// 图像处理像素点 转灰度图像

    for (int i = 0; i < img.rows; i++) {

        //获取当前行的首地址 

        uchar* start_pixels =  img.ptr<uchar>(i);

        for (int j = 0; j < img.cols; j++) {
           uchar b = start_pixels[0];
           uchar g = start_pixels[1];
           uchar r = start_pixels[2];

            // 公式计算 f = 0.11R + 0.59G + 0.30B 最大 255 ,


            uchar gray = 0.11f*r + 0.59f*g + 0.30f*b;

           start_pixels[0] = gray;
           start_pixels[1] = gray;
            start_pixels[2] = gray;

            start_pixels += 3;

        }


    }

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值