OpenCV命名規則

2021-05-28 09:58:10 字數 2836 閱讀 4824

opencv使用近似匈牙利命名法的方法,比較值得一提的特色是:它的資料結構幾乎都是大寫的cv開頭,而它提供的函式都是小寫的cv,舉個例子:

cvsize imagesize = cvsize(400,300); //cvsize(width,height)

imagesize的型別是cvsize,通過cvsize()函式來初始化結構體:400代表的是寬、300代表的是高;cvsize結構體包含width及height兩個整型,可以用imagesize.width,imagesize.height來直接讀取和設定,唯一差別是,cvsize()順便用malloc()分配了結構體的記憶體空間。

函式命名規則基本上遵從:cvactiontargetmethod();提高了函式的可讀性,指明用什麼動作,哪個目標,用什麼方法。常遇到的狀況有四種:

1.cvactiontarget()

2.cvtarget()

3.cvmethod()

4.cvactionmethod()

1.的話例如cvcreateimage(),cvnamedwindow()等;

2.的話非常常見,如cvmat(),cvsize(),cvpoint();

3.的話比較常用的是演算法或某方法,如cvdct()離散余弦變換演算法;

4.的話如cvfindcontours()輪廓搜尋演算法;此外也有例外,如:doubleclickedmouse()(這個例子不在opencv命名之內)。這種命名法對於常寫程式的人而言是相當重要的技巧,初始化資料結構就直接用名字,函式呼叫就用動詞+名詞,當再構建乙個程式或系統的時候可以很容易的用資料流圖(dfd)表示。這個是良好的命名習慣。

常量命名規則,opencv裡提供了大量預定義的常量,也就是大寫英文加下劃線的那種,如:

cv_8uc1

ipl_depth_8u

cv_blur_no_scale

這種常量由#define在標頭檔案中定義,如:

#define cv_blur_no_scale 0

一般的常量都很容易從字面上的意義去了解,比較特殊的是矩陣和圖形的建立引數,cvcreatemat(),cvcreateimage()。

cvcreatemat()引數的命名規則是用大寫cv_(位數)+(資料型別)+(channel數),全部的矩陣引數如下所示:

cv_8uc1   cv_8sc1   cv_16uc1   cv_16sc1   cv_32sc1   cv_32fc1   cv_64fc1

cv_8uc2   cv_8sc2   cv_16uc2   cv_16sc2   cv_32sc2   cv_32fc2   cv_64fc2

cv_8uc3   cv_8sc3   cv_16uc3   cv_16sc3   cv_32sc3   cv_32fc3   cv_64fc3

cv_8uc4   cv_8sc4   cv_16uc4   cv_16sc4   cv_32sc4   cv_32fc4   cv_64fc4

裡面的位數,分別代表8bits、16bits、32bits、64bits;

資料型別,u代表unsigned integer,無符號整數型別;s代表signed integer,有符號整數型別,f代表float,浮點數型別;

channel數,c1代表單通道,c2代表兩個通道,c3代表三個通道,以此類推… 這裡的通道表示的是色彩空間的維度,例如bmp格式的rgb空間,它的channel就是3,簡單來說就是c1代表乙個二維矩陣,c2代表兩個二維矩陣,c3代表三個二維矩陣,以此類推…

cvcreateimage()引數固定用ipl_depth_開頭,命名規則為ipl_depth_(位數)+(資料型別),全部的引數如下所示:

ipl_depth_1u    ipl_depth_32f    ipl_depth_8s

ipl_depth_8u                     ipl_depth_16s

ipl_depth_16u                    ipl_depth_32s

所有的說明皆同上述的矩陣引數命名規則,位數分別有1bit(黑白二值圖),8bits,16bits,32bits;資料型別分別為u(unsigned integer),s(signed integer),f(float)。

opencv 命名規則

(1) 函式名:

cvactiontargetmod(...)

action = 核心功能(core functionality) (e.g. set, create)

target = 目標影象區域(target image area) (e.g. contour, polygon)

mod    = (可選的)調整語(optional modifiers) (e.g. argument type)

(2) 矩陣資料型別:

cv_(s|u|f)c

s = 符號整型

u = 無符號整型

f = 浮點型

e.g.: cv_8uc1 是指乙個8位無符號整型單通道矩陣,

cv_32fc2是指乙個32位浮點型雙通道矩陣.

(3) 影象資料型別:

ipl_depth_(s|u|f)

e.g.: ipl_depth_8u 影象畫素資料是8位無符號整型.

ipl_depth_32f影象畫素資料是32位浮點型.

(4) 標頭檔案:

#include

#include

#include

#include

#include // 一般不需要,cv.h 內已包含該標頭檔案

OpenCV命名規則

opencv使用近似匈牙利命名法的方法,比較值得一提的特色是 它的資料結構幾乎都是大寫的cv開頭,而它提供的函式都是小寫的cv,舉個例子 cvsize imagesize cvsize 400,300 cvsize width,height imagesize的型別是cvsize,通過cvsize ...

OpenCV(三) OpenCV命名規則 例項演示

2 矩陣資料型別 通用矩陣資料型別 cv s u f c 其中,s 符號整型 u 無符號整型 f 浮點型 e.g.cv 8uc1 是指乙個8位無符號整型單通道矩陣,cv 32fc2是指乙個32位浮點型雙通道矩陣。3 影象資料型別 通用影象資料型別 ipl depth s u f e.g.ipl de...

匈牙利命名規則

匈牙利命名規則建議變數名稱以乙個或多個字母開頭,這些小寫字母用以標識其變數型別,型別標識字母的下乙個字母一般採用大寫。型別定義使用相同的型別識別符號作為字首,唯一不同的是,型別定義名稱一般全部使用大寫。表1 匈牙利命名規則約定 字首 資料型別 例子 b boolean bispresent,bval...