opencv 輪廓應用

2021-07-03 11:27:15 字數 1441 閱讀 3399

typedef struct cvseq

cvseq;

#define cv_contour_fields()  \

cv_sequence_fields()     \

cvrect rect;             \

int color;               \

int reserved[3];

typedef struct cvcontour

cvcontour;

則:cvcontour比cvseq多了如下三個引數

cvrect rect;             \連通區域的外接矩形

int color;               \

int reserved[3];

contour:輪廓(頂點的序列或陣列)。

slice:感興趣區輪廓部分的起點和終點,預設計算整個輪廓的面積。

函式cvcontourarea計算整個或部分輪廓的面積。在計算部分輪廓的情況時,由輪廓弧線和連線兩端點的弦

圍成的區域總面積被計算,如下圖所示:

注意:輪廓的位置將影響區域面積的符號,因此函式範圍的有可能是負值。可以使用c執行時函式fabs()來

得到面積的絕對值。

cvarclength( const void* curve,

cvslice slice cv_default(cv_whole_seq),

int is_closed cv_default(-1));

計算輪廓長度。

cvboundingrect( cvarr* points, int update cv_default(0) );

計算輪廓的最小正外接矩形,返回 cvrect,矩形邊界與圖形邊界平行

cvminarearect2( const cvarr* points,

cvmemstorage* storage cv_default(null));

計算輪廓的最小外接矩形,返回 cvbox2d,矩形邊界可能與邊界有一點角度,可通過

cvboxpoints( cvbox2d box, cvpoint2d32f pt[4] );獲取矩形的4個頂點,再依次連線頂點即可。

cvminenclosingcircle( const cvarr* points,

cvpoint2d32f* center, float* radius );

計算輪廓的最小外接圓。

4.cvdrawcontours( cvarr *img, cvseq* contour,

cvscalar external_color, cvscalar hole_color,

int max_level, int thickness cv_default(1),

int line_type cv_default(8),

cvpoint offset cv_default(cvpoint(0,0)));

opencv 輪廓描述

上午主要學習了鏈碼的有關知識,鏈碼是一種表示方法,是用於表示有順序連線的具有指定長度了方向的直線段組成的邊界線,典型的情況下,這種表示方法基於4或8連線,經常選用更大間隔的網格對邊界進行重取樣,邊界的鏈碼取決於初始點,然而,此編碼可以通過簡單的過程實現初始點的歸一化,將鏈碼看成是方向編號的迴圈序列,...

opencv 輪廓屬性

1.aspect ratio寬與高之比 cv2 boundingrect cnt 2.extent 目標面積 佔 邊界矩形框 的比例area cv2.contourarea cnt x,y,w,h cv2.boundingrect cnt rect area w h extent float are...

OpenCV 輪廓處理

在qt中使用opencv庫,下面是輪廓處理的程式 void secondwindow on pushbutton 4 clicked else cvsmooth gray,gray,cv gaussian,3,3,0,0 cvsmooth函式平滑濾波 cvseq contour 0 cvseq型別 ...