OpenCV 3 C++像素操作:RGB转灰度与线性增强
66 浏览量
更新于2024-08-30
1
收藏 280KB PDF 举报
本文档详细介绍了在OpenCV 3中使用C++进行图像像素操作的基本概念和技术。主要关注的是RGB图像到灰度图像的转换以及线性增强的应用。
RGB图像转灰度图
在OpenCV中,RGB图像转换为灰度图通常采用平均值法或亮度分量方法。这里展示了通过计算每个像素的红(R), 绿(G), 蓝(B)分量的平均值来实现这一过程的代码片段:
```cpp
Mat src, dst;
src = imread("E:/image/image/daibola.jpg");
// ... (检查图片是否加载成功)
for (int row = 0; row < src.rows; row++) {
for (int col = 0; col < src.cols; col++) {
int b = src.at<Vec3b>(row, col)[0]; // R分量
int g = src.at<Vec3b>(row, col)[1]; // G分量
int r = src.at<Vec3b>(row, col)[2]; // B分量
dst.at<Vec3b>(row, col)[0] = max(r, max(g, b)); // 将R、G、B取最大值作为灰度值
dst.at<Vec3b>(row, col)[1] = max(r, max(g, b));
dst.at<Vec3b>(row, col)[2] = max(r, max(g, b));
}
}
imshow("output", dst);
```
这段代码遍历源图像的每一个像素,将三个颜色通道的最大值设为新的灰度值,这样可以保留图像中的主要信息,但丢弃了色彩细节。
图像线性增强
线性增强是对图像像素进行线性变换的一种方式,通过调整亮度和对比度,改变图像的整体视觉效果。在这里,作者使用了两个参数α和β来进行线性变换:
```cpp
Mat src1, dst;
src1 = imread("E:/image/image/im1.jpg");
// ... (检查图片是否加载成功)
double alpha = 1.2, beta = -0.5; // 线性变换系数
Mat kernel(1, 1, CV_32F, Scalar(alpha, beta)); // 创建一个1x1的浮点型卷积核
dst = src1 * kernel + Scalar(0); // 应用线性变换
imshow("output", dst);
```
通过调整α和β的值,可以实现图像的增亮、暗化、对比度提升或降低等效果。`Scalar(0)`是偏移量,确保变换后的像素值保持在合适的范围内。
本文档提供了OpenCV 3中基本的图像像素操作实践,包括RGB图像转灰度图和线性增强,这对于理解和处理图像数据在C++环境下是至关重要的技能。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-01-21 上传
2020-08-25 上传
2024-04-28 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
weixin_38699724
- 粉丝: 6
- 资源: 933
最新资源
- 全新PHP网址缩短防封短网址生成系统
- Almayce Video Handler-开源
- NotaFiscalNet:.NET电子发票生成
- 武汉医保读卡DLL动态库.rar
- Ziplyne Player prod-crx插件
- RestWithSpringBootMath
- ZoomTest.rar_FlashMX/Flex源码_FlashMX_
- Weinview触摸屏-OMRON_CJ1CS1PLC连接说明书
- quantcs-impl:量化类约束的实现
- Luiz_Henrique_Souza_JAMStackAlura
- paixu.rar_汇编语言_Asm_
- Learn-wp-cli:命令行,WP-CLI和自定义WP-CLI命令入门
- Ledavio Image Importer-crx插件
- The-ABM-in-Archaeology-Bibliography:有关考古中基于代理的模型(ABM)的文献的完整列表。 由Iza Romanowska和Lennart Linde维护和创建
- HubCollections.3okat1n89t.gaJP44e
- flexx:用纯Python编写桌面和Web应用程序