在opencv 中使用了大量的template模板類,是由於影象的資料型別有8位、16位、32位,整形、float 型等多種型別,不可能為每種型別都定義相關類,因此引入了模板類的概念。
模板(templates)使得我們可以生成通用的函式,這些函式能夠接受任意資料型別的引數,可返回任意型別的值,而不需要對所有可能的資料型別進行函式過載。這在一定程度上實現了巨集(macro)的作用。
它們的原型定義可以是下面兩種中的任何乙個:
template function_declaration;
template function_declaration;
上面兩種原型定義的不同之處在關鍵字class 或 typename的使用。它們實際是完全等價的,因為兩種表達的意思和執行都一模一樣。
以opencv中的size_模板類為例:
templateclass size_
;
上面 _tp 就可以是任意的資料型別,比如size_,表示其類內部模板是int型,在這裡_tp就相當於是int 的巨集定義 C STL類模板的使用 繼承中類模板的使用
繼承中父子類和模板類的結合情況 父類一般類,子類是模板類,和普通繼承類似 子類是一般類,父類是模板類,繼承時必須在子類裡例項化父類的型別引數 父類和子類都時模板類時,子類的虛擬的型別可以傳遞到父類中 demo.cpp include using namespace std 繼承中父子類和模板類的結合...
OpenCV中的模板匹配
在該demo中選取了兩張猴哥的 一張用來獲得模板,另外一張用模板去匹配。下圖為選取模板的影象 以下為選取的匹配模板 根據該模板在下面的圖中找到猴哥的臉 該demo要實現的功能已經說完。下面就是實現過程中的一些細節。首先來說,模板匹配的原理 模板匹配就是兩幅影象,將小的影象像個滑塊一樣在大的上面逐畫素...
類模板的使用 類模板使用總結
歸納以上的介紹,可以這樣宣告和使用類模板 先寫出乙個實際的類。將此類中準備改變的型別名 如int要改變為float或char 改用乙個自己指定的虛擬型別名 如上例中的t 在類宣告前面加入一行,格式為 templatetemplate class a 類體用類模板定義物件時用以下形式 類模板名 實際型...