【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年又重新从事图像处理相关的工作,以后要好好维护这个博客。多用心,多总结,多和大家学习交流。不积跬步无以至千里!
【OpenCV】cv::Mat对单个像素的访问和操作相关推荐
- 【opencv-c++】cv::Mat::convertTo图像像素类型转换
[opencv-c++]cv::Mat::convertTo图像像素类型转换 1.背景 2.示例 1.背景 opencv的最常用的图像数据类型是unsigned char 8bits, unsigne ...
- OpenCV cv::Mat::checkVector用法的实例(附完整代码)
OpenCV cv::Mat::checkVector用法的实例 OpenCV cv::Mat::checkVector用法的实例 OpenCV cv::Mat::checkVector用法的实例 # ...
- OpenCV cv :: Mat的串行输出功能的实例(附完整代码)
OpenCV cv :: Mat的串行输出功能的实例 OpenCV cv :: Mat的串行输出功能的实例 OpenCV cv :: Mat的串行输出功能的实例 #include "open ...
- cv mat 灰度值和_访问OpenCV中灰度图像的像素值
我只是想让我的概念清楚 - 访问cv :: Mat的所有矩阵元素意味着我实际上访问图像的所有像素值(灰度 - 1通道和颜色 - 3通道)? 就像我的代码打印加载的1通道图像的灰度矩阵的值和类型CV_3 ...
- cv mat 灰度值和_c++ 访问OpenCV中灰度图像的像素值
您正在访问矩阵的元素,您也正在访问图像本身.在您的代码中,执行此操作后: cv::Mat img = cv::imread("lenna.png"); 矩阵img代表图像lenna ...
- 如何用指针访问opencv cv::Mat数据?ptr<uchar>()
示例: #include <opencv2/opencv.hpp> #include <iostream>using namespace cv; using namespace ...
- opencv cv::mat::data是什么数据类型?
本身是一个uchar指针,用的话你就自己当成一个colsrowschannels的矩阵,类型通过type()方法可以获得,返回的是opencv自己定义的宏(例如CV_16SC3).根据返回宏再去判断数 ...
- Opencv cv::Mat利用at求像素点值
描述 利用at取值时,一定要注意cv::Mat的类型 类型及对应关系 CV_8U(uchar) CV_8UC1 (uchar) CV_8UC2 (Vec2b) CV_8UC3 (Vec3b) CV_8 ...
- 图像像素点赋值_Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像...
普通操作 1. 读取像素 读取像素可以通过行坐标和列坐标来进行访问,灰度图像直接返回灰度值,彩色图像则返回B.G.R三个分量. 需要注意的是, OpenCV 读取图像是 BGR 存储显示. 灰度图片读 ...
最新文章
- 清华大学继续教育学院sql注入漏洞
- 分布式架构:并发重复请求和幂等场景技术实现总结
- 当一个事情过度的艳丽的时候就是一个衰败的开始
- BZOJ4044 Luogu P4762 [CERC2014]Virus Synthesis (回文自动机、DP)
- OpenCV辅助对象(help objects)(2)_Range
- JVM优化系列-Stop-The-World实战
- 时间复杂度、空间复杂度,如何”不复杂“地学?
- zabbix PHP databases support off Fail
- 你还在 Docker 中跑 MySQL?恭喜你,好下岗了!
- java实现word转pdf
- 计算机仿真课程的心得体会,数学建模心得体会
- html中什么用来表示特殊字符引号,HTML特殊字符显示
- 计算机到点就有音乐怎么清除缓存垃圾,QQ音乐缓存文件在哪 QQ音乐缓存清理方法-电脑教程...
- juniper服务器连接显示都是网关,Juniper防火墙,LVS DR mode 与 HTTP keepalive 丢包问题追查...
- macbook pro 重置SMC
- 无状态编程, lambda 表达式中传入的局部变量,为什么需要是不可变的(final)
- 我的求带之路(已成功
- 网络存储之NAS和SAN的区别
- 5G系统——UE移动性
- 2021年12种高级UX / UI设计趋势
热门文章
- Linux GCC lib库相互引用,互相依赖(交叉引用)链接解决办法
- JPOM - AOP+自定义注解实现操作日志记录
- Apache ZooKeeper - 选举Leader源码流程深度解析
- Oracle自动备份脚本(Linux)
- java 线程池 源码_java线程池源码分析
- 错误:Subquery returns more than 1 row 表示子查询返回了多行数据
- android图片跳转动画效果,Android实现Activity界面切换添加动画特效的方法
- python无法调用pygame,python-pycharm无法识别pygame程序包
- 为什么是get()和set()方法?
- 射影几何3:拓广平面