OpenCV笔记(五)CvMat结构体初解2

2024-08-21 15:18

本文主要是介绍OpenCV笔记(五)CvMat结构体初解2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这一节学习矩阵的维度和通道的含义和概念。

一、对维度和通道的理解:

例(用cvGetReal2D或cvGet2D函数):二维矩阵。

单通道:float value = (float)cvGetReal2D(&mat, y, x);// mat:CvMat型结构体,y:行,x:列,函数返回值为double型,返回坐标为(y,x)的值;

多通道:CvScalar vlaue = cvGet2D(&mat, y, x); //mat:CvMat型结构体,y:行,x:列,函数返回值为CvScalar型(第三篇中介绍的结构体类型,成员为val[4]);

下面贴出通道数为2时的源码,该程序遍历输出矩阵中的值:

#include "stdafx.h"
#include "cxtypes.h"
#include "highgui.h"int main(int argc, char* argv[])
{CvMat mat;float data[12]={1, 2, 3, 4,5, 6, 7, 8,9,10,11,12};/*初始化mat,其中,若通道数为2,则type类型为:CV_<8|16|..><F|U|..>C2,其中cols处值应为:数组的列数除以2,因为双通道中,两个值为一组。*/cvInitMatHeader(&mat, 3, 2, CV_32FC2, data);for(int y = 0; y < mat.rows; y++){for(int x = 0; x < mat.cols; x++){CvScalar value = cvGet2D(&mat, y, x);//结构体value中的成员:val[4]:B、G、R、alpha;printf(" (%.2f %.2f) ", value.val[0], value.val[1]);	}printf("\n");}return 0;
}

通道:如上源码中,CV_32FC2中,“C”后面的“2”即为通道数,如何简单地理解通道呢?比如通道数为3,则data(float类型)中的三个数为一组,构成一个单元m,所形成的以m为单元的矩阵可以拆分成3个以float类型的数为单元的矩阵。比如对于二维矩阵来说,按此思想,由原来的data矩阵(定义为2行m列, 因为通道数为3,所以m = (12/2)/3=2,即data应为2行2列。 )划分为:{1,4,7,10},{2,5,8,11},{3,6,9,12};3个2行2列的矩阵。

维度:维度的最直观体现就是坐标的个数,比如3维,就有z,x,y三个坐标。(注意:如果要定义大于2维的结构体,要用CvMatND。)


Ps:更高效快速地读取矩阵信息:使用cvGet2D等函数的原理是栈,如果图片比较大,数以百万计的栈操作会使程序的效率变低,那么如何提高效率呢?

额,就是用指针啦~下一节我们再来学习~


这篇关于OpenCV笔记(五)CvMat结构体初解2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1093523

相关文章

在PyCharm中安装PyTorch、torchvision和OpenCV详解

《在PyCharm中安装PyTorch、torchvision和OpenCV详解》:本文主要介绍在PyCharm中安装PyTorch、torchvision和OpenCV方式,具有很好的参考价值,... 目录PyCharm安装PyTorch、torchvision和OpenCV安装python安装PyTor

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

OpenCV图像形态学的实现

《OpenCV图像形态学的实现》本文主要介绍了OpenCV图像形态学的实现,包括腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽运算和黑帽运算,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起... 目录一、图像形态学简介二、腐蚀(Erosion)1. 原理2. OpenCV 实现三、膨胀China编程(

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(