1. 程式人生 > >OPENCV新建一個CV::MAT物件

OPENCV新建一個CV::MAT物件

2018.10.8更新

不過最新的學習發現,如果CV::MAT中的資料是連續的,也可以把資料用memcpy拷貝到對應的data指標指向的記憶體中。不過需要注意的是如果不連續,這樣做是不可以的。

我之前專案中需要做的是把CV::MAT中的資料按位元組取出,通過tcp傳送出去,對方收到後重新根據接收到的位元組流組裝起來顯示就需要用到以下建構函式:

inline Mat::Mat(int _rows, int _cols, int _type)

舉個例子:

cv::Mat testImg(1080,1920,CV_8UC4);

可以看到這裡的type都是 CV_<bit_depth>(S|U|F)C<number_of_channels>這種格式的。其解釋為:

1--bit_depth---位元數---代表8bite,16bites,32bites,64bites
2--S|U|F--
        S--代表---signed int---有符號整形
        U--代表--unsigned int--無符號整形
        F--代表--float---------單精度浮點型
3--C<number_of_channels>----代表---一張圖片的通道數,比如:
         1--灰度圖片--grayImg---是--單通道影象
         3--RGB彩色影象---------是--3通道影象
         4--帶Alph通道的RGB影象--是--4通道影象

舉個栗子:

     【1】CV_8UC1---則可以建立----8位無符號的單通道---灰度圖片------grayImg

     【2】CV_8UC3---則可以建立----8位無符號的三通道---RGB彩色影象---colorImg

     【3】CV_8UC4--則可以建立-----8位無符號的四通道---帶透明色的RGB影象