OpenCV 3 C++像素操作:RGB转灰度与线性增强
40 浏览量
更新于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++环境下是至关重要的技能。
295 浏览量
164 浏览量
2024-04-28 上传
230 浏览量
点击了解资源详情
150 浏览量
426 浏览量
222 浏览量

weixin_38699724
- 粉丝: 6
最新资源
- 蓝色多边形设计实用工作汇报PPT模板免费下载
- CS400 p6项目网站构建演示教程
- 安卓Android招聘信息系统的设计与实现
- Mobiscroll手机滑动选择器:HTML5页面的IOS样式实用工具
- Vclskin for bcb 6:提升界面美观度的皮肤控件
- LeetCode算法问题与解决方案探索
- NBTEdit插件:轻松管理Minecraft玩家NBT数据
- C语言实现的AD9850抽奖程序源码解析
- Discuz!时间提醒插件功能与安装说明
- 图像分割技术检测椅子破损区域详解
- 企业级舆情爬虫:支持批量管理与监控
- muhamadhafizh的GitHub学生资料项目解析
- Flutter入门教程:创建计数器应用程序
- Google Postman v4.1.3:详细安装与使用教程
- C语言实战案例:深入理解qsort函数源码
- 创意铅笔手绘公司简介PPT模板设计