首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >看他怎么“折腾”(三)

看他怎么“折腾”(三)

作者头像
视界音你而不同
发布于 2020-04-10 07:48:28
发布于 2020-04-10 07:48:28
27300
代码可运行
举报
运行总次数:0
代码可运行
tr模版函数是Opencv Mat类提供的一种访问数据的方式,基本使用方式大概如下:
  • mat.ptr<Vec3b>(row)
  • mat.ptr<Vec3b>(row, col)

OpenCV的Mat类提供的这种ptr模版函数的方式有两个比较明显的优点:

  1. 看起来比较直观,可读性较好;
  2. 如果出现错误,可以抛出异常,这样更加保证程序的健壮性。

来吧我猜你又想看下这段代码示例对不

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (int row = 0; row < mat.rows; row++)
{
 for (int col = 0; col < mat.cols; col++)
 {
 Vec3b *c = mat.ptr<Vec3b>(row, col);
 c->val[0] = 0;   //B
 c->val[1] = 255; //G
 c->val[2] = 0; //R
 }
}

这段代码不用太多解释了,只说一下Vec3b,这是OpenCV自定义的一个数据结构,内部有3个uchar的成员,分别来表示B, , R的值。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 视界音你而不同 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
看他怎么"折腾" (四)
at同样也是一个模版函数,但与ptr不同的是,at返回的是一个“引用”,即一个别名,而且一般来讲不占用内存空间(具体与编译器先关)。同样呢,当发生错误时,at也可以抛出异常,可以try {} catch {}将其抓获。
视界音你而不同
2020/04/10
2990
看他怎么“折腾”(二)
上一节,我们介绍了Mat遍历连续空间的方式,当然存数数据的空间也有可能是不连续的,本节就来简单介绍一下不连续空间的遍历方式。 再写代码 二维数组 “ 同样,先来一段代码: int es = mat.elemSize(); for (int row = 0; row < mat.rows; row++) { for (int col = 0; col < mat.cols; col++) { (&mat.data[row * mat.step])[col * es] = 0;
视界音你而不同
2020/04/10
2420
OpenCV中高效的像素遍历方法,写出工程级像素遍历代码
初次接触OpenCV的开发者,必须过的第一道坎就是学会如何遍历访问Mat对象中每个像素,实现像素级别的图像操作,这个是最级别的编程技能,但是不同的像素遍历方法效率有云泥之别,相差特别大,甚至可能成为算法运行的瓶颈之一,因此找到一种速度快的遍历方法对大图像处理是很关键的。在开始寻找高效遍历方法之前,先来了解一下Mat对象的数据组织形式与像素块数据的存储方式,Mat对象由两个部分组成,元数据头部加像素数据块部分,图示如下:
OpenCV学堂
2019/07/05
5.5K1
OpenCV金字塔图像分辨率重建与融合
图像金字塔是对一张输入图像先模糊再下采样为原来宽高的1/2(宽高缩小一半)、不断重复模糊与下采样的过程就得到了不同分辨率的输出图像,叠加在一起就形成了图像金字塔、所以图像金字塔是图像的空间多分辨率存在形式。这里的模糊是指高斯模糊,所以这个方式生成的金字塔图像又称为高斯金字塔图像。高斯金字塔图像有两个基本操作 reduce 是从原图生成高斯金字塔图像、生成一系列低分辨图像,OpenCV对应的相关API为:
OpenCV学堂
2018/11/06
1.6K0
看他怎么“折腾”(五)
此处的迭代器与C++中支持的迭代是一个概念,因为OpenCV本身就是用C++实现的。
视界音你而不同
2020/04/10
2410
看他怎么“折腾”(五)
K-means算法及OpenCV实现
K-means算法MacQueen在1967年提出的,是最简单与最常见数据分类方法之一并且最为一种常见数据分析技术在机器学习、数据挖掘、模式识别、图像分析等领域都用应用。从机器学习的角度看,K-means属于一种无监督的机器学习方法。无监督学习(Unsupervised Learning)简单的说就是在不给定正确答案(标签)的情况下,在数据中找到一些相似的特征用以分析(分类)数据的方法。而在K-means算法解决图像的问题中,就是在对图像的像素点进行分类,达到图像分割的目的。
chaibubble
2022/05/07
7890
K-means算法及OpenCV实现
OpenCV图像处理专栏十一 | IEEE Xplore 2015的图像白平衡处理之动态阈值法
这是OpenCV图像处理专栏的第十一篇文章,之前介绍过两种处理白平衡的算法,分别为灰度世界算法和完美反射算法。今天来介绍另外一个自动白平衡的算法,即动态阈值法,一个看起来比较厉害的名字。论文原文链接放在附录。
BBuf
2019/12/30
1K0
OpenCV图像处理专栏十七 | 清华大学《基于单幅图像的快速去雾》C++复现(有一定工程意义)
这是OpenCV图像处理算法朴素实现专栏的第17篇文章。今天为大家带来一篇之前看到的用于单幅图像去雾的算法,作者来自清华大学,论文原文见附录。
BBuf
2020/03/19
1.5K0
OpenCV图像处理专栏十七 | 清华大学《基于单幅图像的快速去雾》C++复现(有一定工程意义)
万字长文,值得收藏/参考的OpenCV C++基础代码
一位友好人士做的B站OpenCV4.x C++ 快速入门30讲视频课程的笔记总结!我只能点赞了!
OpenCV学堂
2021/08/06
1.2K0
OpenCV图像处理笔记(一):图片基本操作
==如果有报无法找到opencv_world343.dll的Error,请把C:\opencv\build\x64\vc14\bin下的opencv_world343.dll文件复制到C:\Windows 目录下即可==
MiChong
2020/09/24
1.7K0
OpenCV图像处理笔记(一):图片基本操作
OpenCV中积分图介绍与应用
OpenCV中积分图函数与应用 一:图像积分图概念 积分图像是Crow在1984年首次提出,是为了在多尺度透视投影中提高渲染速度。随后这种技术被应用到基于NCC的快速匹配、对象检测和SURF变换中、基于统计学的快速滤波器等方面。积分图像是一种在图像中快速计算矩形区域和的方法,这种算法主要优点是一旦积分图像首先被计算出来我们可以计算图像中任意大小矩形区域的和而且是在常量时间内。这样在图像模糊、边缘提取、对象检测的时候极大降低计算量、提高计算速度。第一个应用积分图像技术的应用是在Viola-Jones的对象检
OpenCV学堂
2018/04/04
2.9K0
OpenCV中积分图介绍与应用
快速中值滤波算法之黄氏算法
传统的中值滤波是通过滑动窗口不断在图像上移动,求出窗口内的中值作为中心像素点的像素,在这个过程中显然存在大量的重复计算,所以效率很低。所以有人提出了一个利用直方图来做中值滤波的算法,请看下图:
BBuf
2019/12/04
1.8K0
快速中值滤波算法之黄氏算法
OpenCV实现图像连通组件标记与分析
连接组件标记算法(connected component labeling algorithm)是图像分析中最常用的算法之一,算法的实质是扫描一幅图像的每个像素,对于像素值相同的分为相同的组(group),最终得到图像中所有的像素连通组件。扫描的方式可以是从上到下,从左到右,对于一幅有N个像素的图像来说,最大连通组件个数为N/2。扫描是基于每个像素单位,对于二值图像而言,连通组件集合可以是V={1|白色}或者V={0|黑色}, 取决于前景色与背景色的不同。对于灰度图像来说,连图组件像素集合可能是一系列在0 ~ 255之间k的灰度值。常见的连通组件标记算法有如下:
OpenCV学堂
2018/07/26
2.2K0
OpenCV实现图像连通组件标记与分析
10、图像的几何变换——平移、镜像、缩放、旋转、仿射变换 OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(1)OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(2)数字图像
  图像几何变换又称为图像空间变换,它将一副图像中的坐标位置映射到另一幅图像中的新坐标位置。我们学习几何变换就是确定这种空间映射关系,以及映射过程中的变化参数。图像的几何变换改变了像素的空间位置,建立一种原图像像素与变换后图像像素之间的映射关系,通过这种映射关系能够实现下面两种计算:
vv彭
2020/10/27
4.2K0
10、图像的几何变换——平移、镜像、缩放、旋转、仿射变换
    


OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(1)OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(2)数字图像
OpenCV中直方图反向投影算法详解与实现
OpenCV中直方图反向投影算法详解与实现 一:直方图交叉 OpenCV中直方图反向投影算法实现来自一篇论文《Indexing Via Color Histograms》其作者有两位、是Michael
OpenCV学堂
2018/04/04
1.6K0
OpenCV中直方图反向投影算法详解与实现
OpenCV图像处理笔记(三):霍夫变换、直方图、轮廓等综合应用
一、霍夫直线变换 1、霍夫直线变换 Hough Line Transform用来做直线检测 前提条件 – 边缘检测已经完成 平面空间到极坐标空间转换 2、霍夫直线变换介绍 对于任意一条直线上的所有点来说 变换到极坐标中,从[0~360]空间,可以得到r的大小 属于同一条直线上点在极坐标空(r, theta)必然在一个点上有最强的信号出现,根据此反算到平面坐标中就可以得到直线上各点的像素坐标。从而得到直线 3、相关API 标准的霍夫变换 cv::HoughLines从平面坐标转换到霍夫空间,最终输出是
MiChong
2020/09/24
3.2K0
OpenCV图像处理笔记(三):霍夫变换、直方图、轮廓等综合应用
OpenCV中KMeans算法介绍与应用
一:KMeans算法介绍 KMeans算法MacQueen在1967年提出的,是最简单与最常见数据分类方法之一并且最为一种常见数据分析技术在机器学习、数据挖掘、模式识别、图像分析等领域都用应用。如果从
OpenCV学堂
2018/04/04
1.6K0
OpenCV中KMeans算法介绍与应用
OpenCV图像处理专栏十 | 利用中值滤波进行去雾
这是OpenCV图像处理专栏的第十篇文章,介绍一种利用中值滤波来实现去雾的算法。这个方法发表于国内的一篇论文,链接我放附录了。
BBuf
2019/12/26
9050
OpenCV图像处理专栏十 | 利用中值滤波进行去雾
OpenCV图像处理专栏一 | 盘点常见颜色空间互转
今天是OpenCV传统图像处理算法的第一篇,我们来盘点一下常见的6种颜色空间互转算法,并给出了一些简单的加速方案,希望可以帮助到学习OpenCV图像处理的同学。这6种算法分别是:
BBuf
2019/12/09
1.3K0
【从零学习OpenCV 4】这4种读取Mat类元素的的方法你都知道么?
对于Mat类矩阵的读取与更改,我们已经在矩阵的循环赋值中见过如何用at方法对矩阵的每一位进行赋值,这只是OpenCV提供的多种读取矩阵元素方式中的一种,本小节将详细介绍如何读取Mat类矩阵中的元素,并对其数值进行修改。在学习如何读取Mat类矩阵元素之前,首先需要知道Mat类变量在计算机中是如何存储的。多通道的Mat类矩阵是一个类似于三维的数据,而计算机的存储空间是一个二维空间,因此Mat类矩阵在计算机存储时是将三维数据变成二维数据,先存储第一个元素每个通道的数据,之后再存储第二个元素每个通道的数据。每一行的元素都按照这种方式进行存储,因此如果我们找到了每个元素的起始位置,便可以找到这个元素中每个通道的数据。图2-5展示了一个三通道的矩阵的存储方式,其中连续的蓝色、绿色和红色的方块分别代表每个元素的三个通道。
小白学视觉
2019/11/07
3.7K0
【从零学习OpenCV 4】这4种读取Mat类元素的的方法你都知道么?
推荐阅读
相关推荐
看他怎么"折腾" (四)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验