您的位置:首页 > 运维架构

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

2017-03-08 10:10 225 查看
我们在使用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年又重新从事图像处理相关的工作,以后要好好维护这个博客。多用心,多总结,多和大家学习交流。不积跬步无以至千里!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Mat opencv 像素操作