OpenCV 建立影象時,CV_8UC1,CV_32FC3,CV_32S等引數的含義
形式:CV_<bit_depth>(S|U|F)C<number_of_channels>
bit_depth:位元數---代表8bite,16bites,32bites,64bites...
舉個例子吧--比如說:
如果你現在建立了一個儲存--灰度圖片的Mat物件,這個影象的大小為寬100,高100,那麼,現在這張灰度圖片中有10000個畫素點,它每一個畫素點在記憶體空間所佔的空間大小是8bite,8位--所以它對應的就是CV_8。
---------------------------------------------------------------------------
S|U|F:
S--代表---signed int---有符號整形
U--代表--unsigned int--無符號整形
F--代表--float---------單精度浮點型
----------------------------------------------------------------------------
C<number_of_channels>----代表---一張圖片的通道數,比如:
channels = 1:灰度圖片--grayImg---是--單通道影象
channels = 3:RGB彩色影象---------是--3通道影象
channels = 4:帶Alph通道的RGB影象--是--4通道影象
可以這麼建立Mat類物件:
Mat(int rows, int cols, int _type);
或 Mat(Size size,int _type);
_type is CV_8UC1, CV_64FC3, CV_32SC(12) etc.
注意:我們偶爾會發現不帶通道數的型別,如:CV_32S,CV_8U等等。
其實,不帶通道數的這些型別就是預設通道數為1。
例如,CV_8U就等同於CV_8UC1,CV_32S就等同於CV_32SC1。
imshow函式在顯示影象時,會將各種型別的資料都對映到[0, 255]。
如下:
· 如果載入的影象是8位無符號型別(8-bit unsigned),就顯示影象本來的樣子。
· 如果影象是16位無符號型別(16-bit unsigned)或32位整型(32-bit integer),便用畫素值除以256。也就是說,值的範圍是 [0,255 x 256]對映到[0,255]。
· 如果影象是32位或64位浮點型(32-bit floating-point or 64-bit floating-point),畫素值便要乘以255。也就是說,該值的範圍是 [0,1]對映到[0,255]。
如:CV_8U的灰度或BGR影象的顏色分量都在0~255之間。直接imshow可以顯示影象。 CV_32F或者CV_64F取值範圍為0~1.0,imshow的時候會把影象乘以255後再顯示。