OpenCV中MAT中数据类型的设置(转)
前言
opencv中很多数据结构为了达到內存使用的最优化,通常都会用它最小上限的空间来分配变量,有的数据结构也会因为图像文件格式的关系而给予适当的变量,因此需要知道它们声明的空间大小来配置适当的变量。一 般标准的图片,为RGB格式它们的大小为8bits格式,范围为0~255,对一个int空间的类型来说实在是太小,整整浪费了24bits的空间,假设有个640*480的BMP文件空间存储內存,那整整浪费了640*480*3*(32-8)bits的內存空间,总共浪费了2.6MB!,也就是那 2.6MB内什么东西都没存储,如果今天以8bits的格式来存储则只使用到0.6MB的內存而已(640*480*3*(8)+54 bits),因此,对于文件格式的对应是一件很重要的事.
在这边除了要考虑bits的空间大小外,还要考虑使用类型的正负号的问题,一般的图像文件是不存在负号的,如果今天即使选则正确的空间大小,可是出现的结果却是负的,那就功亏一篑了。这里除了Float及double类型,char,int,short int都是用二的补数表示法,它们不具正负号bit,而Float,double则是用IEEE 754,在第32bit,64bit上有一个正负号bit.
对于二位多通道图像,首先定义其尺寸,然后指定存储元素的数据类型及每个矩阵点的通道数:
CV_[字节数][数据类型]C[通道数]
具体内容
float: 4字节,6-7位有效数字 -3.4E-38 到 3.4E38
double: 8字节,15~16位有效数字 -1.7E-308 到 1.7E308
cvCreateImage()及cvCreateMat()对应
1.Unsigned 8bits(一般的图像文件格式使用的大小)
IplImage数据结构参数:IPL_DEPTH_8U
CvMat数据结构参数:CV_8UC1,CV_8UC2,CV_8UC3,CV_8UC4
| 变量类型 | 空间大小 | 范围 | 其他 | 
|---|---|---|---|
| uchar | 8bits | 0~255 | (OpenCV缺省变量,同等unsigned char) | 
| unsigned char | 8bits | 0~255 | 
2.Signed 8bits
IplImage数据结构参数:IPL_DEPTH_8S
CvMat数据结构参数:CV_8SC1,CV_8SC2,CV_8SC3,CV_8SC4
| 变量类型 | 空间大小 | 范围 | 其他 | 
|---|---|---|---|
| char | 8bits | -128~127 | 
3.Unsigned 16bits
IplImage数据结构参数:IPL_DEPTH_16U
CvMat数据结构参数:CV_16UC1,CV_16UC2,CV_16UC3,CV_16UC4
| 变量类型 | 空间大小 | 范围 | 其他 | 
|---|---|---|---|
| ushort | 16bits | 0~65535 | (OpenCV缺省变量,同等unsigned short int) | 
| unsigned short int | 16bits | 0~65535 | (unsigned short) | 
4.Signed 16bits
IplImage数据结构参数:IPL_DEPTH_16S
CvMat数据结构参数:CV_16SC1,CV_16SC2,CV_16SC3,CV_16SC4
| 变量类型 | 空间大小 | 范围 | 其他 | 
|---|---|---|---|
| short int | 16bits | -32768~32767 | (short) | 
5.Signed 32bits
IplImage数据结构参数:IPL_DEPTH_32S
CvMat数据结构参数:CV_32SC1,CV_32SC2,CV_32SC3,CV_32SC4
| 变量类型 | 空间大小 | 范围 | 其他 | 
|---|---|---|---|
| int | 32bits | -2147483648~2147483647 | (long) | 
6.Float 32bits
IplImage数据结构参数:IPL_DEPTH_32F
CvMat数据结构参数:CV_32FC1,CV_32FC2,CV_32FC3,CV_32FC4
| 变量类型 | 空间大小 | 范围 | 其他 | 
|---|---|---|---|
| float | 32bits | 1.18*10-38~3.40*1038 | 
7.Double 64bits
CvMat数据结构参数:CV_64FC1,CV_64FC2,CV_64FC3,CV_64FC4
| 变量类型 | 空间大小 | 范围 | 其他 | 
|---|---|---|---|
| double | 64bits | 2.23*10-308~1.79*10308 | 
8.Unsigned 1bit
IplImage数据结构参数:IPL_DEPTH_1U
| 变量类型 | 空间大小 | 范围 | 其他 | 
|---|---|---|---|
| bool | 1bit | 0~1 | 
其他变量对应
1.Signed 64bits
int64
long long
2.Unsigned 64 bits
uint64
unsigned long long
OpenCV中MAT中数据类型的设置(转)的更多相关文章
- 【opencv基础】OpenCV从Mat中提取某些行或列
		这两个函数返回的是指向原矩阵内部位置的指针,类似于浅拷贝: code cv::Mat align_mean(cv::Mat mean, cv::Rect facebox, float scaling_ ... 
- (转)OpenCV 访问Mat中每个像素的值
		转自:http://blog.csdn.net/xiaowei_cqu/article/details/19839019 在<OpenCV 2 Computer Vision Applicati ... 
- OpenCV(2)-Mat数据结构及访问Mat中像素
		Mat数据结构 一开始OpenCV是基于C语言的,在比较早的教材例如<学习OpenCV>中,讲解的存储图像的数据结构还是IplImage,这样需要手动管理内存.现在存储图像的基本数据结构是 ... 
- OpenCV 中 IplImage、CvMat、Mat中的type是怎么回事?
		在使用opencv的过程中,无论使用原始的IplImage和CvMat类型,还是用最新C++版本的Mat类型,在创建和使用过程中,经常会遇到CV_8UC1.CV_8UC3.CV_32FC3等声明,我以 ... 
- opencv中Mat类型数据操作与遍历
		Mat作为opencv中一种数据类型常常用来存储图像,相对与以前的IplImgae类型来说,Mat类型省去了人工的对内存的分配与释放,转而自动分配释放.Mat Class主要包括两部个数据部分:一个是 ... 
- ffmpeg中avframe的YUV格式数据到OpenCV中Mat的BGR格式转换
		ffmpeg实现音视频编解码是非常常用的工具,视频解码出来的raw数据是yuv格式,用来进行后续的图像处理一般是RGB格式的.所以需要从yuv到rgb或者bgr的转换,ffmpeg提供了相应的转换AP ... 
- OpenCV中Mat总结
		一.数字图像存储概述 数字图像存储时,我们存储的是图像每个像素点的数值,对应的是一个数字矩阵. 二.Mat的存储 1.OpenCV1基于C接口定义的图像存储格式IplImage*,直接暴露内存,如果忘 ... 
- OpenCV中Mat的使用
		一.数字图像存储概述 数字图像存储时,我们存储的是图像每个像素点的数值,对应的是一个数字矩阵. 二.Mat的存储 1.OpenCV1基于C接口定义的图像存储格式IplImage*,直接暴露内存,如果忘 ... 
- Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
		Opencv中Mat矩阵相乘——点乘.dot.mul运算详解 2016年09月02日 00:00:36 -牧野- 阅读数:59593 标签: Opencv矩阵相乘点乘dotmul 更多 个人分类: O ... 
随机推荐
- TortoiseGit连接gitlab,一直要求输入密码
			问题背景: 公司使用gitlab作为代码管理平台,安装了TortoiseGit之后,使用正常.但是重启电脑之后,再次使用TortoiseGit操作时总是提醒输入gitlab的账号.如下图: 问题原因: ... 
- Aladdin and the Flying Carpet LightOJ - 1341 (素数打表 + 算术基本定理)
			题意: 就是求a的因数中大于b的有几对 解析: 先把素数打表 运用算术基本定理 求出a的所有因数的个数 然后减去小于b的因数的个数 代码如下: #include <iostream> #i ... 
- hihocoder #1236 Scores (15北京赛区网络赛J) (五维偏序,强制在线,bitset+分块)
			链接:http://hihocoder.com/problemset/problem/1236 思路; 有n个五维的向量,给出q个询问,每个询问是一个五维向量,问有多少个向量没有一维比这个向量大.并且 ... 
- MT【212】合作共赢
			一次会议有1990位数学家参加,每人至少有过1327位合作者,求证:可以找到4位数学家,他们中每一个都合作过. 解答:记与$v_i$合作过的数学家构成集合$A_i(i=1,2,\cdots,1990) ... 
- 省选前的CF题
			RT,即将退役的人懒得一篇篇写题解,于是有了这个东西 CF1004E 树上选一条不超过k个点的链,最小化其余点到链上点的最大距离 这个思路很有意思,不像平时一般的树上问题,是从叶子开始一点点贪心合并直 ... 
- P3507 GRA-The Minima Game
			题目大意: 给出N个正整数,AB两个人轮流取数,A先取.每次可以取任意多个数,直到N个数都被取走.每次获得的得分为取的数中的最小值,A和B的策略都是尽可能使得自己的得分减去对手的得分更大.在这样的情况 ... 
- 关于next.js中的css
			css进行了全局和局部的限制 export default () => ( <div className='hello'> <p>Hello World</p> ... 
- pyglet and opengl  -- 纹理映射以及动画
			#-*- coding:gbk -*- #from pyglet.gl import * from OpenGL.GL import * import pyglet from pyglet impor ... 
- bind&currying
			1. bind 基本用法 bind()是ECMAScript5中新增的方法,这个方法主要作用是将函数绑定至某个对象.当在函数f()上调用bind()方法并传入一个对象o作为参数,这个方法将返回一个新函 ... 
- Celery配置实践笔记
			说点什么: 整理下工作中配置celery的一些实践,写在这里,一方面是备忘,另外一方面是整理成文档给其他同事使用. 演示用的项目,同时也发布在Github上: https://github.com/b ... 
