OpenCV的資料型別 輔助物件

2021-08-23 14:05:08 字數 1888 閱讀 3564

在很多演算法中都存在著迴圈巢狀,只有滿足終止條件時才會退出。通常情況下,終止條件的形式要麼是達到允許的有限迭代次數(count或max_iter),要麼是某種形式的誤差引數(如果接近如此程度,就退出迴圈,稱為eps,即epsilon的簡稱)。cv::termcriteria類有三個成員變數(type, maxcount, epsilon),都可以直接設定,因為它們是公有的。通常只通過其建構函式termcriteria( int type, int maxcount, int epsilon )進行設定。其中,type的值可為cv::termcriteria::count、cv::termcriteria::max_iter或cv::termcriteria::eps,也可把兩個條件並在一起(使用位運算子|)。

cv::range類用於確定乙個連續的整數序列,含有兩個成員變數start和end,範圍包含start,但不包含end。成員函式有size()(得到range類中的元素數)和empty()(判斷range類中是否含有元素)。cv::range::all()用於任何需要獲得物件可用範圍的時候。

智慧型指標(smart pointer)允許我們建立乙個物件的引用,然後把它傳遞到各處並建立更多對該物件的引用,而這些引用都會被計數。當引用超出範圍,智慧型指標的引用計數就會減少,當所有的引用消失時,該物件將自動清理(釋放)。

可以通過以下兩種方式定義乙個指標模板的示例:

① cv::ptrp( new cv::matx33f );

② cv::ptrp = makeptr();

一旦得到p,就可以建立其他相同型別的物件,而不需要把乙個指向新的物件的指標傳遞給它們。例如:可以建立乙個cv::ptrq, 當p的值傳遞給q時,p和q同時指向乙個例項。它們都知道自己是兩個指標中的乙個,當p被釋放時,q就能知道它是原始矩陣僅存的引用的引用。如果這個時候q也要被釋放,它的析構函式將被隱式呼叫,由於q發現它是遺留下來的最後乙個引用,它會釋放它的原始矩陣。cv::ptr<>是現成安全的。

ptr類的附加函式 函式

描述addref

增加指標內部的引用次數

release

減少指標內部的引用次數

empty

① 確定乙個智慧型指標是否指向乙個已經被釋放掉的物件(乙個物件呼叫一次或多次release()的時候);

② 確定智慧型指標物件內部物件指標是否處於其他原因而為null(賦值時使用了乙個剛好首先返回null的函式)

delete_obj

引用計數為0時自動呼叫的函式,預設情況下,定義了但不做任何事,實際可根據自己的需求過載該函式。

opencv使用異常來處理錯誤,定義了自己的異常型別cv::exception,它繼承自stl的異常類std::exception。

有幾個內建巨集用於自己生成異常,但是在較新的opencv版本中,這些功能只能在除錯(debug)版本中使用。

exception內建巨集 巨集

描述cv_error(errorcode, description)

生成並丟擲乙個有固定文字描述的異常

cv_error_(errorcode, printf_fmt_str, [printf-args])

以同樣的方式工作,但允許使用類似printf格式字串和引數代替固定的描述

cv_assert(condition)

會在測試程式中所設定的條件(condition),如果不符合條件,則丟擲異常。

cv_dbgassert(condition)

cv::inputarray類和cv::outputarray類之間主要的區別在於前者是常量(唯讀),後者是可變數。除此之外還有cv::inputoutputarray(就地計算的資料)和cv::noarray()(表示輸入的是並沒有被使用的輸入量或無輸出)。

本文主要介紹了opencv中的上述輔助物件,還有其他輔助物件,比如cv::datatype<>模板,但未做深入研究,所以在此不進行介紹。

OpenCV輔助型別

opencv中許多函式將矩陣作為引數傳入也將矩陣作為返回值返回,另一方面opencv中存在許多不同類別的矩陣,如scalar vec matx及c 標準庫中的vector 甚至是後面要涉及的大型矩型陣列 mat和sparemat 為了保證錯綜複雜的各類矩形型別保持相互聯絡,opencv定義了inpu...

OpenCV的資料型別

一般的影象檔案格式使用的是 unsigned 8bits。cvmat矩陣對應的引數型別就是cv 8uc1,cv 8uc2,cv 8uc3等。float 是32位的,對應cvmat資料結構引數就是 cv 32fc1,cv 32fc2,cv 32fc3等。double是64位,對應cvmat資料結構引數...

opencv學習 opencv的資料型別 2

cv rect類 矩陣類包含point類的x,y 矩陣左上角 size類的width和height 矩陣大小 預設構造 cv rect r 拷貝構造 cv rect r2 r1 數值初始化 cv rect r x,y,w h 點座標及大小初始化構造 cv rect r p,sz 兩點初始化構造 cv...