我们在使用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年又重新从事图像处理相关的工作,以后要好好维护这个博客。多用心,多总结,多和大家学习交流。不积跬步无以至千里!

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

  1. 【opencv-c++】cv::Mat::convertTo图像像素类型转换

    [opencv-c++]cv::Mat::convertTo图像像素类型转换 1.背景 2.示例 1.背景 opencv的最常用的图像数据类型是unsigned char 8bits, unsigne ...

  2. OpenCV cv::Mat::checkVector用法的实例(附完整代码)

    OpenCV cv::Mat::checkVector用法的实例 OpenCV cv::Mat::checkVector用法的实例 OpenCV cv::Mat::checkVector用法的实例 # ...

  3. OpenCV cv :: Mat的串行输出功能的实例(附完整代码)

    OpenCV cv :: Mat的串行输出功能的实例 OpenCV cv :: Mat的串行输出功能的实例 OpenCV cv :: Mat的串行输出功能的实例 #include "open ...

  4. cv mat 灰度值和_访问OpenCV中灰度图像的像素值

    我只是想让我的概念清楚 - 访问cv :: Mat的所有矩阵元素意味着我实际上访问图像的所有像素值(灰度 - 1通道和颜色 - 3通道)? 就像我的代码打印加载的1通道图像的灰度矩阵的值和类型CV_3 ...

  5. cv mat 灰度值和_c++ 访问OpenCV中灰度图像的像素值

    您正在访问矩阵的元素,您也正在访问图像本身.在您的代码中,执行此操作后: cv::Mat img = cv::imread("lenna.png"); 矩阵img代表图像lenna ...

  6. 如何用指针访问opencv cv::Mat数据?ptr<uchar>()

    示例: #include <opencv2/opencv.hpp> #include <iostream>using namespace cv; using namespace ...

  7. opencv cv::mat::data是什么数据类型?

    本身是一个uchar指针,用的话你就自己当成一个colsrowschannels的矩阵,类型通过type()方法可以获得,返回的是opencv自己定义的宏(例如CV_16SC3).根据返回宏再去判断数 ...

  8. Opencv cv::Mat利用at求像素点值

    描述 利用at取值时,一定要注意cv::Mat的类型 类型及对应关系 CV_8U(uchar) CV_8UC1 (uchar) CV_8UC2 (Vec2b) CV_8UC3 (Vec3b) CV_8 ...

  9. 图像像素点赋值_Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像...

    普通操作 1. 读取像素 读取像素可以通过行坐标和列坐标来进行访问,灰度图像直接返回灰度值,彩色图像则返回B.G.R三个分量. 需要注意的是, OpenCV 读取图像是 BGR 存储显示. 灰度图片读 ...

最新文章

  1. 清华大学继续教育学院sql注入漏洞
  2. 分布式架构:并发重复请求和幂等场景技术实现总结
  3. 当一个事情过度的艳丽的时候就是一个衰败的开始
  4. BZOJ4044 Luogu P4762 [CERC2014]Virus Synthesis (回文自动机、DP)
  5. OpenCV辅助对象(help objects)(2)_Range
  6. JVM优化系列-Stop-The-World实战
  7. 时间复杂度、空间复杂度,如何”不复杂“地学?
  8. zabbix PHP databases support off Fail
  9. 你还在 Docker 中跑 MySQL?恭喜你,好下岗了!
  10. java实现word转pdf
  11. 计算机仿真课程的心得体会,数学建模心得体会
  12. html中什么用来表示特殊字符引号,HTML特殊字符显示
  13. 计算机到点就有音乐怎么清除缓存垃圾,QQ音乐缓存文件在哪 QQ音乐缓存清理方法-电脑教程...
  14. juniper服务器连接显示都是网关,Juniper防火墙,LVS DR mode 与 HTTP keepalive 丢包问题追查...
  15. macbook pro 重置SMC
  16. 无状态编程, lambda 表达式中传入的局部变量,为什么需要是不可变的(final)
  17. 我的求带之路(已成功
  18. 网络存储之NAS和SAN的区别
  19. 5G系统——UE移动性
  20. 2021年12种高级UX / UI设计趋势

热门文章

  1. Linux GCC lib库相互引用,互相依赖(交叉引用)链接解决办法
  2. JPOM - AOP+自定义注解实现操作日志记录
  3. Apache ZooKeeper - 选举Leader源码流程深度解析
  4. Oracle自动备份脚本(Linux)
  5. java 线程池 源码_java线程池源码分析
  6. 错误:Subquery returns more than 1 row 表示子查询返回了多行数据
  7. android图片跳转动画效果,Android实现Activity界面切换添加动画特效的方法
  8. python无法调用pygame,python-pycharm无法识别pygame程序包
  9. 为什么是get()和set()方法?
  10. 射影几何3:拓广平面