OpenCV Mat的數據類型
- Mat
- type類型
- 內存拷貝
- 簡單實現
Mat
Mat類(Matrix的縮寫)是OpenCV用于處理圖像而引入的-一個封裝類。他是一個自動內存管理工具。
Mat:本質上是由兩個數據部分組成的類:(包含信息有矩陣的大小,用于存儲的方法,矩陣存儲的地址等)矩陣頭和一個指針,指向包含了像素值的矩陣(可根據選.擇用于存儲的方法采用任何維度存儲數據)。矩陣頭部的大小是恒定的。然而,矩.陣本身的大小因圖像的不同而不同,通常是較大的數量級圖像矩陣比較耗時
構造Mat對象相當于構造了一個矩陣(數組),需要四個基本要素:行數、列數、通道數以及數據類型,所以Mat類的構造函數如下:
Mat(int rows, int cols, int type)
Mat(Size(int cols, int rows), int type )// Size 是矩陣的行、列數
type類型
表頭的 C1, C2, C3, C4 指的是通道(Channel)數,比如灰度圖像只有 1 個通道,是 C1;JPEG格式 的 RGB 彩色圖像就是 3 個通道,是 C3;PNG 格式的彩色圖像除了 RGB 3個通道外,還有一個透明度通道,所以是 C4
內存拷貝
Mat類也分為深淺拷貝,與c++的深拷貝和淺拷貝類似,mat淺拷貝會復制頭信息,但是像素矩陣是共用的,深拷貝會重新開辟一個新的空間用于像素矩陣的存儲
簡單實現
Mat img=imread(path.toStdString());imshow("img",img);QImage im(img.data,img.cols,img.rows,QImage::Format_RGB888); this->ui->label_image_before->setPixmap(QPixmap::fromImage(im));