opencv-访问Mat中每个像素的值
参考:【OpenCV】访问Mat中每个像素的值(新) 膜拜大佬
以下例子代码均针对8位单通道灰度图。
1 .ptr和[]操作符
Mat最直接的访问方法是通过.ptr<>函数得到一行的指针,并用[]操作符访问某一列的像素值。
Mat image(rows,cols,CV_8UC1);
for (int j=; j<image.rows; j++)
{
uchar* pdata= image.ptr<uchar>(j);
for (int i=; i<image.cols; i++)
{
uchar data=pdata[i];
}
}
2 .ptr和指针操作
除了[]操作符,我们可以使用移动指针*++的组合方法访问某一行中所有像素的值。
Mat image(rows,cols,CV_8UC1);
for (int j=; j<image.rows; j++)
{
uchar* pdata= image.ptr<uchar>(j);
for (int i=; i<image.cols; i++)
{
uchar data=*pdata++;
}
}
3 Mat _iterator
用Mat提供的迭代器代替前面的[]操作符或指针,血统纯正的官方方法~
Mat image(rows,cols,CV_8UC1); Mat_<uchar>::iterator it=image.begin<uchar>();
Mat_<uchar>::iterator itend=image.end<uchar>(); for (;it != itend;++it)
{
uchar data=*it;
}
4 图像坐标 at
Mat image(rows,cols,CV_8UC1); for (int j=; j<image.rows; j++)
{
for (int i=; i<image.cols; i++)
{
uchar data=image.at<uchar>(j,i);
}
}
其中,指针*++访问是最快的方法;另外迭代器访问虽然安全,但性能远低于指针运算;通过图像坐标(j,i)访问是最慢的。
opencv-访问Mat中每个像素的值的更多相关文章
- (转)OpenCV 访问Mat中每个像素的值
转自:http://blog.csdn.net/xiaowei_cqu/article/details/19839019 在<OpenCV 2 Computer Vision Applicati ...
- 【OpenCV】访问图像中每个像素的值
http://blog.csdn.net/xiaowei_cqu/article/details/7557063
- OpenCV(2)-Mat数据结构及访问Mat中像素
Mat数据结构 一开始OpenCV是基于C语言的,在比较早的教材例如<学习OpenCV>中,讲解的存储图像的数据结构还是IplImage,这样需要手动管理内存.现在存储图像的基本数据结构是 ...
- 【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整
今天我们来看一下如何访问图像的像素,以及如何改变图像的亮度与对比度. 在之前我们先来看一下图像矩阵数据的排列方式.我们以一个简单的矩阵来说明: 对单通道图像排列如下: 对于双通道图像排列如下: 那么对 ...
- 【opencv基础】OpenCV从Mat中提取某些行或列
这两个函数返回的是指向原矩阵内部位置的指针,类似于浅拷贝: code cv::Mat align_mean(cv::Mat mean, cv::Rect facebox, float scaling_ ...
- 访问图像中的像素[OpenCV 笔记16]
再更一发好久没更过的OpenCV,不过其实写到这个部分对计算机视觉算法有所了解的应该可以做到用什么查什么了,所以后面可能会更的慢一点吧,既然开了新坑,还是机器学习更有研究价值吧... 图像在内存中的存 ...
- nginx访问日志中添加接口返回值
因为nginx作为web服务器时,会代理后端的一些接口,这时访问日志中只能记录访问接口的status码,也就是说,只能获得200.404 这些的值 那么如何获得接口返回的response值呢? 下面开 ...
- 【OpenCV】访问Mat中的每个像素值
其中注意i,j的位置,写错了好几次.第二个for循环中的if语句用异或来判断图像中哪些像素点发生了改变.
- opencv 3 core组件进阶(1 访问图像中的像素)
访问图像像素的三类方法 ·方法一 指针访问:C操作符[ ]; ·方法二 迭代器iterator; ·方法三 动态地址计算. #include <opencv2/core/core.hpp> ...
随机推荐
- spring boot 结合jsp简单示例
引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...
- mybatis 处理枚举类型
MyBatis支持持久化enum类型属性.假设t_user表中有一列gender(性别)类型为 varchar2(10),存储 MALE 或者 FEMALE 两种值.并且,User对象有一个enum类 ...
- python 18 函数基础二
转自 http://www.cnblogs.com/BeginMan/p/3173328.html 一.装饰器(decorators) 装饰器的语法以@开头,接着是装饰器函数的名字.可选参数. 紧跟装 ...
- 注解到处excel
package com.cxy.domain.poi; import java.lang.annotation.ElementType; import java.lang.annotation.Ret ...
- yolo3使用darknet卷积神经网络训练pascal voc
darknet本来最开始学的是https://github.com/pjreddie/darknet yolo3作者自己开发的,但是它很久不更新了而且mAP值不好观察,于是另外有个https://gi ...
- vue 项目 去哪儿
去哪儿项目 使用vue +vue-router+vuex +axios完成,包括3个部分内容 1.首页演示,包括首页header,首页轮播图,周末去哪儿,热销推荐开发 2.城市列表页面开发 ,包括城市 ...
- Bugs Integrated, Inc.
Bugs Integrated, Inc. 给出一个\(n\times m\)的矩形网格图,给出其中K个障碍物的位置,求其中最多能摆的\(2\times 3\)的矩形的个数,\(n\leq 150,m ...
- 2019.12.04 Java中的内存分配
Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细介绍一下Java在内存分配方面的知识.一般 ...
- sudo: /etc/sudoers is world writable|给用户添加权限报错
给用户添加权限时候出现:sudo: /etc/sudoers is world writable| sudo: /etc/sudoers is world writable解决方式: pkexec c ...
- type元类创建类的方法
一.代码 class_name='car' dict_name={} bases=(object,) class_body=''' def __init__(self,name): self.name ...