【OpenCV】cv::Mat对单个像素的访问和操作

我们在使用OpenCV进行图像处理的过程中,经常会涉及到对指定位置像素的读取和修改,下面我们就介绍OpenCV中几种常用的对指定位置像素值的读取和修改操作。

一、at操作

at操作是一种直接简单的对单个像素的操作方式。

对于灰度图读取和修改操作如下:

uchar pixel_value = Mat.at<uchar>(row, col);
Mat.at<uchar>(row, col) = pixel_value; 

对于RGB彩色图像而言:

Vec3b color_value = Mat.at<Vec3b>(row, col);
Mat.at<Vec3b>(row, col) = color_value;

at操作虽然简单方便,但是这种操作是一种效率比较低的操作,尤其用其进行遍历操作时,效率会很低。因此一般推荐使用下面要介绍的ptr操作。

二、ptr操作
ptr操作时通过指针偏移的方式进行像素的查找、遍历和修改的,因此效率相对较高。
对于灰度图的读取和修改操作如下:

uchar pixel_value = Mat.ptr<uchar>(row)[col];
Mat.ptr<uchar>(row)[col] = pixel_value; 

对于RGB彩色图像而言:

Vec3b color_value = Mat.ptr<Vec3b>(row)[col];
Mat.ptr<Vec3b>(row)[col] = color_value;

自从2014年开通这个博客,一直没有静下心来维护这个博客。2016年又重新从事图像处理相关的工作,以后要好好维护这个博客。多用心,多总结,多和大家学习交流。不积跬步无以至千里!


  • 18
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值