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...