OpenCV灰度图与二值图叠加显示

本文介绍了如何使用OpenCV库对二值图进行处理,将其转换为RGB图并改变特定像素颜色。通过循环遍历像素,将二值图中的1像素替换为自定义RGB值。此外,还展示了如何将灰度图转换为RGB图,并使用addWeighted函数将灰度图与二值图叠加。整个过程详细阐述了图像处理的基本步骤,适用于图像分析和视觉应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.对二值图做处理,先将其转换成RGB图
Mat mask = imread("F:/二值图.png", IMREAD_ANYDEPTH);	//读取二值图,只有0,1像素
//mask.setTo(255, mask == 1); //uint8格式显示0和1像素都是黑色的,为了能看出来二值模板,需要将像素1换成255
//imshow("原始二值图", mask);
//waitKey(6000);
cvtColor(mask, mask, COLOR_GRAY2BGR);//先将二值图转成RGB图,此时二值图中的1像素值就变成了[1,1,1]
for (int i = 0; i < mask.rows; i++)//将RGB图中的[1,1,1]像素改成我们想要的彩色像素
{
	for (int j = 0; j < mask.cols; j++)
	{
		Vec3b& pixel = mask.at<Vec3b>(i, j);//按照坐标,获取RGB图对应的像素值
		if (pixel[0] == 1)   //找到像素值为1的值,将其转换成别的颜色
		{
			pixel[0] = 0;   //Blue //可以自己设置RGB值
			pixel[1] = 128;  //Green
			pixel[2] = 255;  //Red
		}
	}
}

※ 如何设置想要的颜色?推荐一个方法
(1)在windows附件中打开画图工具,找到编辑颜色选项,打开编辑界面。

画图工具(2)选择颜色,就会在右下角显示对应的RGB值,照着这个数输入到代码中就可以了。

在这里插入图片描述

2.读取灰度图
Mat img = imread("F:/灰度图.png", IMREAD_ANYDEPTH);
//imshow("原始灰度图", img);
//waitKey(6000);
cvtColor(img, img, COLOR_GRAY2BGR); //将灰度图转成RGB图
3.灰度图与二值图叠加,利用OpenCV的addWeighted函数
addWeighted(img, 1, mask, 0.5, 1, img);//1,0.5,1是两个图叠加的比例系数,可以自行设置
//imshow("叠加后的图",img);
//waitKey(6000);
4.结果展示

叠加效果

### 使用 OpenCV灰度图像添加噪声的方法 #### 椒盐噪声 为了给灰度图像添加椒盐噪声,可以通过遍历像并随机选取一定数量的像素点将其设置为最大(白色)或最小(黑色)。这种方法适用于评估去噪算法的效果。 ```cpp void saltAndPepper(cv::Mat& image, int n) { for (int k = 0; k < n; ++k) { int i = rand() % image.rows; int j = rand() % image.cols; if (image.channels() == 1) { // Gray Image image.at<uchar>(i, j) = (rand() % 2 == 0 ? 0 : 255); } } } ``` 上述代码展示了如何在灰度图像中加入指定数量 `n` 的椒盐噪声[^2]。此方法利用了随机数生成器来决定哪些像素会被改变以及它们的新会是什么样的极端亮度水平。 #### 高斯噪声 另一种常见的做法是在原始数据基础上叠加服从正态分布的小幅度扰动作为高斯型干扰源。这通常涉及先创建一个具有相同尺寸但充满浮点数数组表示的标准差乘以随机变量加上均的结果;之后再把这个矩阵加回到原来的像上去形成含噪版本。 ```python import cv2 import numpy as np def add_gaussian_noise(gray_image): mean = 0 sigma = 25 gaussian = np.random.normal(mean, sigma, gray_image.shape).astype('uint8') noisy_image = cv2.add(gaussian, gray_image) return noisy_image ``` 这段 Python 脚本定义了一个名为 `add_gaussian_noise()` 函数用来接收单通道(即灰阶模式下)的数据集,并返回带有新引入的零均、特定方差特性的高斯白噪音覆盖后的副本[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值