opencv-Mat數據類型及位數總結
轉自:http://blog.sina.com.cn/s/blog_662c7859010105za.html
在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.
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
原文來自:http://hi.baidu.com/zle_yuanfang/home
opencv-Mat數據類型及位數總結