OpenCV中Mat的type類型與int值的對應以及初始化問題

在OpenCV中,數據類型可以使用int值來代替。

常量類型的命名規則爲:CV_(位數)+(數據類型)+(通道數)。其與int值的對應關係爲:

  C1 C2 C3 C4
CV_8U 0 8  16 24
CV_8S 1 9 17 25
CV_16U 2 10 18 26
CV_16S 3 11 19 27
CV_32S 4 12 20 28
CV_32F 5 13 21 29
CV_64F 6 14 22 30

U爲無符號整型,S爲有符號整型,F爲浮點型。


char爲1字節(8位)

short爲2字節(16位)

long和int爲4字節(32位)

float爲4字節(32位)

double爲8字節(64位)

CV_8UC1對應unsigned char

CV_8SC1對應signed char

CV_16UC1對應unsigned short

CV_16SC1對應signed short

CV_32UC1對應unsigned int或者unsigned long

CV_32SC1對應signed int或者signed long

CV_32FC1對應float

CV_64FC1對應double

在定義的同時進行初始化,需要注意利用數組進行初始化的時候,注意數組元素類型與Mat的數據類型的對應關係。否則會出現賦值異常。

double R_data[]={1.0000,0.0074,-3.9363e-04,-0.0074,0.9998,0.0210,5.4919e-04,-0.0210,0.9998};
cv::Mat R(3,3,CV_64FC1,R_data);//cv::Mat R(3,3,6,R_data);
cout<<"RRRRRRRRRRRRRR:"<<endl<<R<<endl;

這裏的Mat  R初始化對應的R_data一定要爲double,否則會賦值錯誤。

若R_data類型爲float,則輸出如下:

發佈了63 篇原創文章 · 獲贊 71 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章