当前位置: 首页 > news >正文

RV1126 NO.36:OPENCV的at函数遍历图像像素

一.OPENCV的AT函数定义:

AT函数是OPENCV中重要的函数之一,它的作用是修改Mat的矩阵某个像素值。换言之,我们需要修改图像中的像素点就需要利用AT函数去获取并且修改,AT函数的修改一般需要循环cols和rows然后对每个像素点进行修改,如上图。AT函数的定义如下:

                            at<typename>(int i, int j)第一个参数:typename指的是OPENCV的向量类型,向量类型如下:
typedef Vec<uchar, 2> Vec2b:uchar类型的数组,长度为2, 它表示的是二维图像的位置信息、尺寸等等
typedef Vec<uchar, 3> Vec3b:uchar类型的数组,长度为3,它常用于彩色图像的像素值以及对rgb三个通道的处理,并且通道的像素值都是uchar类型
typedef Vec<uchar, 4> Vec4b:uchar类型的数组,长度为4,它常用于彩色图像的像素值以及对argb四个通道的处理,并且通道的像素值都是uchar类型typedef Vec<short, 2> Vec2s:short类型的数组,长度为2, 它表示的是二维图像的位置信息、尺寸等等,但不能做像素处理
typedef Vec<short, 3> Vec3s:short类型的数组,长度为3, 它常用于彩色图像的像素值以及对rgb三个通道的处理,并且通道的像素值都是short类型
typedef Vec<short, 4> Vec4s:short类型的数组,长度为4, 它常用于彩色图像的像素值以及对argb四个通道的处理,并且通道的像素值都是short类型typedef Vec<ushort, 2> Vec2w:ushort类型的数组,长度为2,它表示的是二维图像的位置信息、尺寸等等,但不能做像素处理
typedef Vec<ushort, 3> Vec3w:ushort类型的数组,长度为3,它常用于彩色图像的像素值以及对rgb三个通道的处理,并且通道的像素值都是ushort类型
typedef Vec<ushort, 4> Vec4w:ushort类型的数组,长度为4,它常用于彩色图像的像素值以及对argb四个通道的处理,并且通道的像素值都是ushort类型typedef Vec<int, 2> Vec2i: int类型的数组,长度为2, 它表示的是一个包含2个整数的元素向量,并不能直接表示通道数
typedef Vec<int, 4> Vec4i: int类型的数组,长度为4, 它常用于彩色图像的像素值以及对argb四个通道的处理,并且通道的像素值都是int类型
typedef Vec<int, 6> Vec6i: int类型的数组,长度为6, 它常用于表示六维图像,包括:坐标、描述子、颜色直方等等,但是不能对六维图像直接进行处理
typedef Vec<int, 8> Vec8i: int类型的数组,长度为8, 它常用于表示八维图像,包括:坐标、描述子、颜色直方等等,但是不能对八维图像直接进行处理typedef Vec<float, 2> Vec2f:float类型的数组,长度为2,它表示的是二维图像的位置信息,但不能做通道处理
typedef Vec<float, 3> Vec3f:float类型的数组,长度为3,它常用于彩色图像的像素值以及对rgb三个通道的处理,并且通道的像素值都是浮点数
typedef Vec<float, 4> Vec4f:float类型的数组,长度为4,它常用于彩色图像的像素值以及对argb四个通道的处理,并且通道的像素值都是浮点数
typedef Vec<float, 6> Vec6f: float类型的数组,长度为4,他用于处理6个维度的图像数据,需要注意的是Vec6f仅仅能表示具有6个维度的数据,并不可以对数据进行操作.typedef Vec<double, 2> Vec2d:double类型的数组,长度为2,在图像处理中Vec2d仅仅只是表示具有double类型的图像数据,但是并不能直接操作数据像素
typedef Vec<double, 3> Vec3d:double类型的数组,长度为3,它常用于表示图像的彩色三通道,分别是R(红色)、G(绿色)、B(蓝色),并且对于这三个通道的像素值进行double类型数据的处理typedef Vec<double, 4> Vec4d:double类型的数组,长度为4,它常用于表示图像的彩色四通道,分别是A(透明度)、R(红色)、G(绿色)、B(蓝色),并且对于这四个通道的像素值进行double类型数据的处理。需要注意的是:一般OPENCV对像素的处理大部分都是用uchar类型,其他类型用的很少。第二个参数:i,指的是rows,图像的行数据
第三个参数:j,指的是cols,图像的列数据

二.代码实现at函数遍历Mat矩阵的像素点,并修改像素

2.1 本章节代码主要实现通过at函数遍历Mat矩阵的列和行,并修改三通道图像的像素值。(如图一),大概的代码如下:

Mat img_mat = imread("frame1.jpg"); //读取图片
for (int i = 0; i < img_mat.rows; i++) //循环遍历rows
{for (int j = 0; j < img_mat.cols; j++) //循环遍历cols{img_mat.at<Vec3b>(i,j)[0] = (int)img_mat.at<Vec3b>(i,j)[0] - 10;  //对第一个通道进行像素处理img_mat.at<Vec3b>(i,j)[1] = (int)img_mat.at<Vec3b>(i,j)[1] - 50;  //对第二个通道进行像素处理img_mat.at<Vec3b>(i,j)[2] = (int)img_mat.at<Vec3b>(i,j)[2] - 10;  //对第三个通道进行像素处理}}
imwrite("frame1_process.jpg", img_mat);

上面代码就是对图像的三个通道进行处理,第一个通道的数值 - 10,第二个通道的数值 - 50,第三个通道的数值 - 10。经过处理后的图像如下

原图:

处理过后:

2.2. 本章节代码主要是实现对一个Mat矩阵用at函数去遍历cols和rows,并修改单通道像素,大概的代码如下:

 //single channels Mat before_process_gray_Image;Mat process_gray_Image;//用于存储转换后的灰度图像cvtColor(mat, before_process_gray_Image, COLOR_RGB2GRAY); //RGB图像转换成GRAY灰度,保存没有进行操作的灰度图cvtColor(mat, process_gray_Image, COLOR_RGB2GRAY); //RGB图像转换成GRAY灰度,保存进行操作的灰度图for (int i = 0; i < process_gray_Image.rows; i++){for (int j = 0; j < process_gray_Image.cols; j++){process_gray_Image.at<uchar>(i,j) = 50 - process_gray_Image.at<uchar>(i,j); //对灰度像素进行相减操作}}imwrite("gray_frame1.jpg", before_process_gray_Image);imwrite("gray_frame1_process.jpg", process_gray_Image);

上面代码就是对图像的单个通道进行处理,对单个通道的像素进行处理,这里的像素-50,处理后的效果如下:

没有经过像素处理的灰度jpg图片:

经过灰度处理的图片:

http://www.dtcms.com/a/561509.html

相关文章:

  • .NET Reflector反编绎,如何移除DLL中的一个公开属性
  • Zookeeper监听机制
  • 四川淘宝网站建设方案视觉设计专业
  • ArrayList 与 LinkedList 的区别
  • 商丘做网站多少钱企业邮箱后缀
  • 数据结构期中复习个人笔记
  • 做断桥铝最知名的网站怎么用ps做网站超链接
  • linux系统网站建设资格证网站怎么做
  • 325建筑人才网招聘seo关键词推广怎么做
  • git命令的规范
  • 人形机器辅助设备
  • 深圳找网站建设公司沈阳男科医院哪家好哪个医院正规
  • 目标检测算法与原理(二):Tensorflow实现迁移学习
  • 用 Flink CDC 将 MySQL 实时同步到 Doris
  • win7家用电脑做网站服务器网站开发实习报告
  • 鲸鱼算法详细原理,公式,应用案例-鲸鱼算法优化扩展卡尔曼滤波EKF
  • 「PPG信号处理——(4)基于PPG-ECG 多模态生理信号预处理与特征提取方法研究」2025年11月2日
  • 【Kotlin内联函数】
  • (论文速读)YOLA:学习照明不变特征的低光目标检测
  • 太原网站建设方案开发开源之家
  • 系统思考修炼之旅
  • 网站 默认首页网站域名ip地址查询
  • 矩阵系统哪个好?2025年全方位选型指南与品牌深度解析
  • 合肥瑶海区网站建设方案陇南网站建设
  • 怎么做vip视频网站dedecms 网站还原
  • 网站关键词标签php 网站源代码
  • 本地仓库如何同时绑定多个远程仓库
  • 网站基础建设巴巴商友圈wordpress最好用php
  • Maven 详解(上)
  • 25年05月架构甄选范文“论AI软件测试”,软考高级,系统架构设计师论文