Ubuntu下OpenCV编程[2]-cv::Mat类-程序员宅基地

技术标签: ubuntu  OpenCV库  opencv  

cv::Mat类介绍

遍历cv::Mat图像矩阵

  • 使用at函数进行遍历
  • 使用迭代器进行遍历
  • 使用指针进行遍历
  • 使用子类 cv::Mat_ 运算符重载函数()

由于像素点的数据类型不同,将这几种方式遍历的测试函数,封装成模板函数,如下所示:

namespace Hui {
    // 1. 使用 for循环 + at函数 遍历图像矩阵
    template <typename T>
    void travelMatByAt(cv::Mat &mat, T &pixel)
    {
        for (int i = 0; i < mat.rows; ++i)
            for (int j = 0; j < mat.cols; ++j)
                mat.at<T>(i, j) = pixel;
    }

    // 2. 使用 for循环 + 指针操作 遍历图像矩阵
    template <typename T>
    void travelMatByPointer(cv::Mat &mat, T &pixel)
    {
        for (int i = 0; i < mat.rows; ++i) {
            T *pCol = mat.ptr<T>(i);
            for (int j = 0; j < mat.cols * mat.channels(); ++j) {
                pCol[j] = pixel;
            }
        }
    }

    // 3. 使用迭代器遍历图像矩阵
    template <typename T>
    void travelMapByIterator(cv::Mat &mat, T &pixel)
    {
        for (cv::MatIterator_<T> it = mat.begin<T>(); it != mat.end<T>(); ++it)
            *it = pixel;
    }

    // 4. 使用子类 cv::Mat_ 运算符重载函数()
    template <typename T>
    void travelMapByMap_(cv::Mat &mat, T &pixel)
    {
        cv::Mat_<T> mat_ = mat; //模板类Mat_继承自Mat,=使用的是浅拷贝
        for (int i = 0; i < mat_.rows; ++i)
            for (int j = 0; j < mat_.cols; ++j)
                mat_(i, j) = pixel;
    }
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dfq12345/article/details/78237531

智能推荐

order by 排序原理及性能优化_order by影响性能-程序员宅基地

文章浏览阅读1.5w次,点赞12次,收藏41次。前言排序是我们在写项目中经常用的sql语句的关键字。 往往order by 用不好的话也会对sql性能有一定的影响。我们现在就来介绍一下他的执行过程,并介绍一下优化。正言首先我们来举个例子,假设你要查询城市是”杭州“的所有人的名字,并且按照姓名排序返回前1000个人的姓名、年龄。表定义:这时,你的sql语句可以这么写:这个语句看上去逻辑很清晰,我们还是需要看看他的sql执行过程。..._order by影响性能

关于SetTimer()编译通不过-程序员宅基地

文章浏览阅读1.9k次。我在类成员函数中调用了::SetTimer(GetHWND(),1,1000,TimerProc);编译的时候就提示如下错误:error C2664: 'SetTimer' : cannot convert parameter 4 from 'void (struct HWND__ *,unsigned int,unsigned int,unsigned long)' to 'void (

SpringBoot学习笔记(17)-使用JWT记录用户实时在线数_jwt统计登录人数-程序员宅基地

文章浏览阅读5.2k次,点赞2次,收藏20次。文章目录一、使用JWT做用户实时在线数判断的原理1.1、什么是JWT1.2、使用JWT做用户在线数统计的原理二、具体的代码实现最近再做一个小程序项目,在这个项目中需要有一个管理员用户在线数实时刷新的功能,一开始用的是网上广为流传的做法,即创建一个session监听器,在用户登录时即创建一个session,监听器记录下来并且把count加一,当用户点击注销时把session给remove掉,c..._jwt统计登录人数

数据结构 c语言 图的深度遍历-邻接矩阵实现_c语言图的深度优先遍历(要求必须采用邻接矩阵存储结构完成)-程序员宅基地

文章浏览阅读1.4k次。本题要求实现邻接矩阵存储图的深度优先遍历。函数接口定义:void DFS(MGraph G,Vertex v);其中MGraph是邻接矩阵存储的图,定义如下:#define MaxVertexNum 10 /*定义最大顶点数*/typedef int Vertex;/* 用顶点下标表示顶点,为整型 */typedef struct{ int arcs[MaxVertexNum][MaxVertexNum]; /*邻接矩阵*/ int vexnum,arcnum; /*图中的顶点数v_c语言图的深度优先遍历(要求必须采用邻接矩阵存储结构完成)

Linux安装basemap_linux basemap安装-程序员宅基地

文章浏览阅读1.9k次。1、下载basemap包 https://github.com/matplotlib/basemap/releases2. 解压 tar -zxvf basemap-1.2.1rel.tar.gz3. 安装依赖包3、安装依赖包2、解压pip install numpy -i https://mirrors.aliyun.com/pypi/simplepip install matplotlib -i https://mirrors.al.._linux basemap安装

2020-7-3中兴IC开发设计师 专业面,-程序员宅基地

文章浏览阅读1k次,点赞2次,收藏7次。面试岗位:IC开发设计师先2min自我介绍,然后面试官让选一个自己的项目详细介绍。介绍完根据项目提问,问我后端综合的时候有没有碰到什么时序问题。答:后端不是我的主要工作,不清楚。【后期需要补充后端综合时序问题】面试官再问:有木有别的跟IC设计相关的新目。很遗憾,我只准备了这一个项目,就只能回答没有。问你这些设计都会设计到算法,为什么不搞算法。问:对加班怎么看问:你还有什么问题...

随便推点

同时启动多个tomcat服务器-程序员宅基地

文章浏览阅读61次。假设现在已经按照正常的方式安装配置好了第一个Tomcat,第二个如何设置呢? 解决办法: 1.解压Tomcat到一个新的目录,比如d:\Tomcat2; 2.新建一个环境变量CATALINA_HOME2,路径为d:\Tomcat2; 3.编辑Tomcat/bin/startup.bat和catalina.bat,把CATALINA_HOME全部替换成CATALINA_HOME2...

STM32F030 使用内部时钟和外部时钟_pll_source_hsi-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏10次。static void SetSysClock(void){ __IO uint32_t StartUpCounter = 0, HSEStatus = 0; /* SYSCLK, HCLK, PCLK configuration ----------------------------------------*/#if defined (PLL_SOURCE_HSI) /..._pll_source_hsi

Android实现三级联动下拉框 下拉列表spinner_android省市县下拉框-程序员宅基地

文章浏览阅读2.1k次,点赞2次,收藏7次。Android实现(省、市、县)三级联动下拉框 下拉列表spinner主要实现办法:动态加载各级下拉值的适配器在监听本级下拉框,当本级下拉框的选中值改变时,随之修改下级的适配器的绑定值_android省市县下拉框

amd为什么还用针脚_彻底翻盘!AMD 锐龙9 3900X与锐龙7 3700X评测-程序员宅基地

文章浏览阅读291次。前言AMD于一个月多前的台北电脑展上发布了新的Zen2架构锐龙3000系列处理器,代号“Matisse”。虽然之前大家已经收到许多消息,包括7nm工艺的进步,Zen2架构的chiplet多Die设计,IPC的提升等,但是对新处理器性能的表现还是有很大的期待。现在新的锐龙处理器3900X、3700X和X570主板已经来到PCEVA评测室,我们就一起来看看它的效能表现。Zen2架构的设计在实..._3900 pbo2

获得客户机IP,主机名,端口和用户,java获取客户机信息-程序员宅基地

文章浏览阅读1.6k次。request.getHeader("User-Agent"); //就是取得客户端的系统版本 request.getRemoteAddr(); //取得客户端的IP request.getRemoteHost() //取得客户端的主机名 request.getRemotePort(); //取得客户端的端口 request.getRemo..._如何获取发送请求的客户机的ip

QT+opencv安装笔记-程序员宅基地

文章浏览阅读175次。安装时出现的问题:我使用的build_opencv是别人编译好的,我不知道有可能会存在兼容性的问题(安装时报错,完成后缺失install文件)https://blog.csdn.net/qq_33308135/article/details/85049795复制的build_opencv文件位置:https://pan.baidu.com/s/1KsB553FYyLjmQ-j2OztxQQ...