溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Opencv常見圖像格式Data Type的使用方法

發(fā)布時間:2020-11-03 15:16:01 來源:億速云 閱讀:268 作者:Leah 欄目:開發(fā)技術(shù)

Opencv常見圖像格式Data Type的使用方法?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

cv::Mat 圖像格式 (Data Type)命名規(guī)則

通用的參數(shù)命名格式為:

CV_{元素比特數(shù)}{元素類型}C{通道數(shù)}

1最常見的 CV_8UC3 就表示為 3通道Unsigned 8bits 格式的矩陣

  • 8U:8bit unsigned
  • C3:通道數(shù)為 3

2有些圖片存儲格式是 32位float ,則對應(yīng)的圖像格式為:CV_32FC1,CV_32FC2,CV_32FC3 等;

3如果圖片存儲格式是 64位double ,則對應(yīng)的圖像格式為:CV_64FC1,CV_64FC2,CV_64FC3 等。

int值映射關(guān)系

矩陣元素的數(shù)據(jù)類型也可用不同的 int 值來替代,其對應(yīng)關(guān)系如下表:

Opencv常見圖像格式Data Type的使用方法

取值范圍

Opencv常見圖像格式Data Type的使用方法

at所訪問的數(shù)據(jù)類型

由于 at 方法接受的是 uchar 這樣的數(shù)據(jù)類型,而非 CV_8U。 若是要使用 at 方法訪問數(shù)據(jù)元素,在已知通道數(shù)和每個通道數(shù)據(jù)類型的情況下,指定給 at 方法的數(shù)據(jù)類型如下表所示:

Opencv常見圖像格式Data Type的使用方法

Vec2b:表示每個Vec2b對象中,可以存儲2個char(字符型)數(shù)據(jù)

Vec3b:表示每一個Vec3b對象中,可以存儲3個char(字符型)數(shù)據(jù),比如可以用這樣的對象,去存儲RGB圖像

Vec4b:表示每一個Vec4b對象中,可以存儲4個字符型數(shù)據(jù),可以用這樣的類對象去存儲—4通道RGB+Alpha的圖

對應(yīng)的 Vec類 的定義如下:

template<typename _Tp, int n> class Vec : public Matx<_Tp, n, 1> {...};

typedef Vec<uchar, 2> Vec2b;
typedef Vec<uchar, 3> Vec3b;
typedef Vec<uchar, 4> Vec4b;

typedef Vec<short, 2> Vec2s;
typedef Vec<short, 3> Vec3s;
typedef Vec<short, 4> Vec4s;

typedef Vec<int, 2> Vec2i;
typedef Vec<int, 3> Vec3i;
typedef Vec<int, 4> Vec4i;

typedef Vec<float, 2> Vec2f;
typedef Vec<float, 3> Vec3f;
typedef Vec<float, 4> Vec4f;
typedef Vec<float, 6> Vec6f;

typedef Vec<double, 2> Vec2d;
typedef Vec<double, 3> Vec3d;

typedef Vec<double, 4> Vec4d;
typedef Vec<double, 6> Vec6d;

樣例1

使用無參數(shù)構(gòu)造函數(shù),創(chuàng)建Mat對象

Mat image = Mat();
image.create(4, 4, CV_8UC3); 

或者

Mat m = Mat(4, 4, CV_8UC3)  

此刻表示創(chuàng)建一個4x4大小的像素塊,每個像素都是三通道每個通道的位數(shù)都是8位,一個字節(jié)的。上述CV_8UC3中的8表示8位、UC表示uchar類型、3表示三個通道。

樣例2

使用行、列、類型、Scalar向量四個參數(shù)的構(gòu)造函數(shù)創(chuàng)建Mat對象

Mat m = Mat(4, 4, CV_8UC3, Scalar(0, 255, 255);

或者

Mat m = Mat(Size(4, 4), CV_8UC3, Scalar(255, 0, 0)); 

同樣表示創(chuàng)建一個4x4的像素塊,唯一不一樣的是顏色不是默認(rèn)值而是我們指定的三通道顏色值向量Scalar(0, 255, 255)。其中Scalar向量數(shù)目永遠(yuǎn)是等于通道數(shù)目

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI