日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

OpenCV中常用到的轮廓处理函数汇总

發布時間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV中常用到的轮廓处理函数汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_cv.cn.htm

?

?

ApproxChains

用多邊形曲線逼近 Freeman 鏈

CvSeq* cvApproxChains( CvSeq* src_seq, CvMemStorage* storage,int method=CV_CHAIN_APPROX_SIMPLE,double parameter=0, int minimal_perimeter=0, int recursive=0 );

?

src_seq

涉及其它鏈的鏈指針

storage

存儲多邊形線段位置的緩存

method

逼近方法 (見函數 cvFindContours 的描述).

parameter

方法參數(現在不用).

minimal_perimeter

僅逼近周長大于 minimal_perimeter? 輪廓。其它的鏈從結果中除去。

recursive

如果非 0, 函數從 src_seq 中利用 h_nextv_next links 連接逼近所有可訪問的鏈。如果為 0, 則僅逼近單鏈。

這是一個單獨的逼近程序。 對同樣的逼近標識,函數 cvApproxChains 與 cvFindContours 的工作方式一模一樣。它返回發現的第一個輪廓的指針。其它的逼近模塊,可以用返回結構中的 v_nextv_next 域來訪問


StartReadChainPoints

初始化鏈讀取

void cvStartReadChainPoints( CvChain* chain, CvChainPtReader* reader );

?

chain?

???? 鏈的指針

reader?

???? 鏈的讀取狀態

函數 cvStartReadChainPoints初始化一個特殊的讀取器 (參考 Dynamic Data Structures 以獲得關于集合與序列的更多內容).


ReadChainPoint

得到下一個鏈的點

CvPoint cvReadChainPoint( CvChainPtReader* reader );

?

reader

鏈的讀取狀態

函數 cvReadChainPoint 返回當前鏈的點,并且更新讀取位置。


ApproxPoly

用指定精度逼近多邊形曲線

CvSeq* cvApproxPoly( const void* src_seq, int header_size, CvMemStorage* storage,int method, double parameter, int parameter2=0 );

?

src_seq

點集數組序列

header_size

逼近曲線的頭尺寸

storage

逼近輪廓的容器。如果為 NULL, 則使用輸入的序列

method

逼近方法。目前僅支持 CV_POLY_APPROX_DP , 對應 Douglas-Peucker 算法.

parameter

方法相關參數。對 CV_POLY_APPROX_DP 它是指定的逼近精度

parameter2

如果 src_seq 是序列,它表示要么逼近單個序列,要么在 src_seq 的同一個或低級層次上逼近所有序列 (參考 cvFindContours 中對輪廓繼承結構的描述). 如果 src_seq 是點集的數組 (CvMat*) , 參數指定曲線是閉合 (parameter2!=0) 還是非閉合 (parameter2=0).

函數 cvApproxPoly 逼近一個或多個曲線,并返回逼近結果。對多個曲線的逼近,生成的樹將與輸入的具有同樣的結構。(1:1 的對應關系).


BoundingRect

計算點集的最外面(up-right)矩形邊界

CvRect cvBoundingRect( CvArr* points, int update=0 );

?

points

二維點集,點的序列或向量 (CvMat)?

update

更新標識。下面是輪廓類型和標識的一些可能組合:

  • update=0, contour ~ CvContour*: 不計算矩形邊界,但直接由輪廓頭的 rect 域得到。
  • update=1, contour ~ CvContour*: 計算矩形邊界,而且將結果寫入到輪廓頭的 rect 域中 header.
  • update=0, contour ~ CvSeq* or CvMat*: 計算并返回邊界矩形
  • update=1, contour ~ CvSeq* or CvMat*: 產生運行錯誤 (runtime error is raised)

函數 cvBoundingRect 返回二維點集的最外面 (up-right)矩形邊界。


ContourArea

計算整個輪廓或部分輪廓的面積

double cvContourArea( const CvArr* contour, CvSlice slice=CV_WHOLE_SEQ );

?

contour

輪廓 (定點的序列或數組).

slice

感興趣輪廓部分的起始點,缺省是計算整個輪廓的面積。

函數 cvContourArea 計算整個輪廓或部分輪廓的面積。 對后面的情況,面積表示輪廓部分和起始點連線構成的封閉部分的面積。如下圖所示:

?

NOTE: 輪廓的方向影響面積的符號。因此函數也許會返回負的結果。應用函數 fabs() 得到面積的絕對值。


ArcLength

計算輪廓周長或曲線長度

double cvArcLength( const void* curve, CvSlice slice=CV_WHOLE_SEQ, int is_closed=-1 );

?

curve

曲線點集序列或數組

slice

曲線的起始點,缺省是計算整個曲線的長度

is_closed

表示曲線是否閉合,有三種情況:

  • is_closed=0 - 假設曲線不閉合
  • is_closed>0 - 假設曲線閉合
  • is_closed<0 - 若曲線是序列,檢查 ((CvSeq*)curve)->flags 中的標識 CV_SEQ_FLAG_CLOSED 來確定曲線是否閉合。否則 (曲線由點集的數組 (CvMat*) 表示) 假設曲線不閉合。

函數 cvArcLength 通過依次計算序列點之間的線段長度,并求和來得到曲線的長度。


CreateContourTree

創建輪廓的繼承表示形式

CvContourTree* cvCreateContourTree( const CvSeq* contour, CvMemStorage* storage, double threshold );

?

contour

輸入的輪廓

storage

輸出樹的容器

threshold

逼近精度

函數 cvCreateContourTree 為輸入輪廓 contour? 創建一個二叉樹,并返回樹根的指針。如果參數 threshold 小于或等于 0 ,則函數創建一個完整的二叉樹。如果 threshold? 大于 0 , 函數用 threshold 指定的精度創建二叉樹:如果基線的截斷區域頂點小于threshold,該數就停止生長并作為函數的最終結果返回。


ContourFromContourTree

由樹恢復輪廓

CvSeq* cvContourFromContourTree( const CvContourTree* tree, CvMemStorage* storage,CvTermCriteria criteria );

?

tree

輪廓樹

storage

重構的輪廓容器

criteria

停止重構的準則

函數 cvContourFromContourTree 從二叉樹恢復輪廓。參數 criteria 決定了重構的精度和使用樹的數目及層次。所以它可建立逼近的輪廓。 函數返回重構的輪廓。


MatchContourTrees

用樹的形式比較兩個輪廓

double cvMatchContourTrees( const CvContourTree* tree1, const CvContourTree* tree2,int method, double threshold );

?

tree1

第一個輪廓樹

tree2

第二個輪廓樹

method

相似度。僅支持 CV_CONTOUR_TREES_MATCH_I1

threshold

相似度閾值

函數 cvMatchContourTrees 計算兩個輪廓樹的匹配值。從樹根開始通過逐層比較來計算相似度。如果某層的相似度小于? threshold, 則中斷比較過程,且返回當前的差值。?

總結

以上是生活随笔為你收集整理的OpenCV中常用到的轮廓处理函数汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

歡迎分享!

轉載請說明來源于"生活随笔",并保留原作者的名字。

本文地址:OpenCV中常用到的轮廓处理函数汇总