OpenCV: Mat属性step,size,step1,elemSize,elemSize1
时间:2019-09-18
本文章向大家介绍OpenCV: Mat属性step,size,step1,elemSize,elemSize1,主要包括OpenCV: Mat属性step,size,step1,elemSize,elemSize1使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
step1(i):每一维元素的通道数 step[i]:每一维元素的大小,单位字节 size[i]:每一维元素的个数 elemSize():每个元素大小,单位字节 elemSize1():每个通道大小,单位字节
实例代码感受一下
#include <iostream> #include <opencv/highgui.h> using namespace cv; void Learn_Mat_Definiton()//测试一下step[]的各个维度大小 { //////////////////Demo1(3维矩阵)/////////////////////////////////////////// printf("//////////////////////Demo1(3维矩阵)////////////////////////\n"); //最后面的两个数:(行,列),确定了一个面 //是一个依次降维的过程 //8,10组成了面,5个面,组成了立方体 int matSize[] = {5,8,10};//每一维元素的个数:8:行,10:列 Mat mat1(3,matSize, CV_16UC3, Scalar::all(0)); //求step[i]的大小:每一维元素的大小(单位字节) printf("\n///////step[i]的大小//////////\n"); printf("step[0]:%d\n",mat1.step[0]);//480:面的大小(第一维) printf("step[1]:%d\n",mat1.step[1]);//60:线的大小(第二维) printf("step[2]:%d\n",mat1.step[2]);//6:点的大小(第三维) //求size[i]:每一维元素的个数 printf("\n///////size[i]的大小///////\n"); printf("size[0]:%d\n",mat1.size[0]);//5:面 printf("size[1]:%d\n",mat1.size[1]);//8:线 printf("size[2]:%d\n",mat1.size[2]);//10:点 //求step1(i):每一维元素的通道数 printf("\n///////step1(i)的大小///////\n"); printf("step1(0):%d\n",mat1.step1(0));//240:面 printf("step1(1):%d\n",mat1.step1(1));//30:线 printf("step1(2):%d\n",mat1.step1(2));//3:点 //求elemSize:每个元素的大小(单位字节) printf("\n///////elemSize的大小///////\n"); printf("elemSize:%d\n",mat1.elemSize());//6:每个元素的大小 //求elemSize1:每个通道的大小(单位字节) printf("\n///////elemSize1的大小///////\n"); printf("elemSize1:%d\n",mat1.elemSize1());//2:每个通道的大小 } int main() { std::cout << "Hello, OpenCV!" << std::endl; Learn_Mat_Definiton(); return 0; }
我们先看第一组step[i],其实如果倒着看理解会更加深刻一些,首先定义的每个元素是CV_16UC3,16bits,3通道,所以对应每个元素的大小是
step[2] = 16/8*3=6 bytes
1
step[1]:对应的是线的大小,第二维的元素的大小,也就是二维矩阵每一行的大小,所以
step[1] = 10*6 = 60 bytes
1
step[0]:对应的是面的大小,每一行的大小再乘以行数
step[0] = 60*8 = 480 bytes
1
第二组size[i]的大小,
size[0] = 5
size[1] = 8
size[2] = 10
1
2
3
因为
step1[i] = step.p[i]/elemSize1();
1
就先看一下elemSize和elemSize1的具体含义
elemSize 表示每个元素的大小(单位是字节),每个元素可能有多个通道,按照代码中对应的定义,每个元素有三个通道,每个通道类型为CV_16U,所以3个通道的总数是6,和step[2]的数值相等。
elemSize1 每个通道的大小(单位字节),CV_16=2字节
所以规整化的step1[i]分别为:
step1[0] = step[0]/elemSize1 = 240 bytes
step1[1] = step[1]/elemSize1 = 30 bytes
step1[2] = step[2]/elemSize1 = 3 bytes
原文链接:https://blog.csdn.net/Felaim/article/details/80702787
原文地址:https://www.cnblogs.com/fcfc940503/p/11545444.html
- 《笨办法学Python》 第42课手记
- 使用ES6新特性开发微信小程序(1)
- 《笨办法学Python》 第41课手记
- 生信宝典之傻瓜式 (五) - 文献挖掘查找指定基因调控网络
- linux学习第一篇:网络配置
- 使用ES6新特性开发微信小程序(2)
- Android权限机制,你真的了解吗?
- Window环境下搭建Vue.js开发环境
- ios开发之xcode环境介绍
- CIRCOS增加热图、点图、线图和区块属性
- github pages + Hexo + 域名绑定搭建个人博客
- 使用ES6新特性开发微信小程序(3)——类
- linux学习第四篇:克隆虚拟机以及两台linux机器相互登录
- 前端开发的工具化与工程化
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 点餐系统的部署,Java点餐系统部署到腾讯云Linux服务器
- 详解Android 中AsyncTask 的使用
- 解决Android应用冷启动时出现的白屏问题的方法
- Java点餐系统+扫码点餐小程序部署文档(2020版)
- Android开发实现各种图形绘制功能示例
- Android webview手动校验https证书(by 星空武哥)
- AndroidStudio Gradle第三依赖统一管理的实现方法
- 小程序上传多张图片到springboot后台,返回可供访问的图片链接
- AndroidStudio Gradle基于友盟的多渠道打包方法
- Android开发之全屏与非全屏的切换设置方法小结
- Android使用GridView实现日历的方法
- Android控件AppWidgetProvider使用方法详解
- R语言使用链梯法Chain Ladder和泊松定律模拟和预测未来赔款数据
- Android ViewPager实现左右滑动的实例
- R语言通过伽玛与对数正态分布假设下的广义线性模型对大额索赔进行评估预测