OpenCV學習筆記(一)之常用基本資料型別

2021-09-02 00:03:05 字數 1931 閱讀 1787

就像c、c++等語言一樣,opencv作為乙個開源庫,為了便捷及良好的封裝性,它也有很多自己定義的資料型別,這些型別在很多地方都有用到。學習opencv首先就需要對它的基本資料型別有個大概的了解,這樣在之後開始正式專案時就算遇到各種各樣複雜的資料型別也好回頭再來查詢。

cvpoint型別是只含有兩個int型變數x,y的結構體,它的變體有cvpoint2d32f和cvpoint3d32f,這兩個結構體的變數型別都是int型,但是前者只含有兩個變數x,y,後者含有三個變數x,y,z。

cvsize和cvpoint一樣都只含有兩個變數,為int型變數width和height,儲存的是一幅的大小。它的變體為cvsize2d32f只不過是float型的變數width和height。

cvrect含有四個變數分別是x,y,width,height,常用來畫矩形框,如函式rectangle(cv_in_out mat& img, rect rec, const scalar& color, int thickness=1, int linetype=8, int shift=0);

此函式中第乙個引數為要輸入的影象,第二個引數為要繪製的矩形框,第三個引數為顏色設定,第四個引數為線寬,後兩個引數使用時基本不設定,保持預設值。類似的畫矩形框的函式還有

cvrectangle( cvarr* img, cvpoint pt1, cvpoint pt2, cvscalar color, int thickness cv_default(1), int line_type cv_default(8), int shift cv_default(0));

使用方式和前乙個函式類似,只不過需要具體設定矩形框的左頂點與右下點的座標。

cvscalar是乙個含有1個double型陣列val[4]元素的結構體,陣列元素分別儲存顏色的r、g、b、a值。它還有三個以內聯函式形式存在的建構函式(關於c語言的內聯函式的意義可以參考鏈結中的文章 ),分別是cvscalar()cvrealscalar()cvscalarall()

iplimage型別是opencv中的基本型別,也是我們最常用到的資料型別,它是乙個結構體型別,裡面定義了影象大小、顏色通道、位深、影象roi等在內的眾多資訊,主要用於儲存載入的影象資料。例如:iplimage * image=cvloadimage(".\\lena.bmp",1);

image中就儲存類lena這張的主要資料資訊,方便我們後面呼叫裡面的引數。需要注意的是 上面那種方式是同時建立影象頭並分配影象資料,如果從攝像頭等外設讀入的資料只有影象資料沒有影象頭的情況,那麼會出現有影象資料但是沒有為影象頭分配儲存空間(即,沒有為iplimage*指標分配動態儲存空間),則

需要先呼叫iplimage* cvcreateimageheader( cvsize size, int depth, int channels )函式建立影象頭,再呼叫void cvsetdata( cvarr* arr, void* data, int step )函式指定影象資料,可以理解為將這個新影象的資料指標指向了乙個已存在的影象資料上,不存在影象資料儲存空間的分配操作。

cvmat是opencv中的矩陣結構,可以是一維的、二維的、三維的或者是n維陣列,用於儲存影象資料。與iplimage型別有很多相似之處,甚至於iplimage型別就是派生於cvmat型別。

opencv中的「in-place」操作指的是「原影象和目標影象是乙個影象」

如下:cverode(image,image);

該函式中輸入原影象與輸出目標影象都是乙個影象。

opencv中還有許多資料型別,都是非常有用的,我們最常接觸到的就是上面那些。由於我也是初學者,關於opencv中的許多東西都還不熟悉,在此寫下的這些基本資料型別也是為了加深對opencv的印象,使自己慢慢對opencv有更加深入的了解。

opencv學習筆記(一)

對話方塊介面上直接顯示影象 含opencv內容 第一部分 建立顯示影象區域 1 建立對話方塊工程mymfc 2 在第三步中選擇 as a statically linked library 3 設定opencv環境變數 4 在mymfc.h檔案中新增如下 include cv.h include h...

Opencv學習筆記 一

一 opencv的命名空間 opencv中的c 類和函式都是定義在命名空間cv中的,有兩種方法訪問 在 開頭加上以下這句 using namespace cv 開頭一般可寫成 include includeusing namespace cv using namespace std 二 mat類的使...

OpenCV學習筆記(一)

opencv是乙個開源的計算機視覺庫,設計目標是執行速度進,盡量快,主要關注實時應用。構建乙個簡單易用的計算機視覺框架,以幫助開發人員更見便捷地設計複雜的計算視覺相關應用程式。opencv當初的三大目標 為基本的視覺應用提供開放且優化的源 以促進視覺研究的發展。能有效地避免 閉門造車 通過提供乙個通...