在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,則輸出如下: