国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

學習筆記:C++環(huán)境下OpenCV的findContours函數(shù)的參數(shù)詳解及優(yōu)化

這篇具有很好參考價值的文章主要介紹了學習筆記:C++環(huán)境下OpenCV的findContours函數(shù)的參數(shù)詳解及優(yōu)化。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

這個是Visual Studio2019版本在OpenCV環(huán)境配置好后所顯示的6個參數(shù),也即為全部參數(shù)

但是,常用參數(shù)僅有四個(參見程序里的第二行注釋)

cv::void findContours(cv::InputOutputArray image,
                      cv::OutputArrayOfArray contours,
                      cv::OutputArray hierarchy,
                      int mode,     int method,
                      cv::Point offset = cv::Point())


//完整形式findContours(image, countours,hierarchy, mode,method, offset);
//一般使用時僅輸入這四個參數(shù)即可findContours(image,countours,mode,method);

//image:單通道圖像矩陣,可以是灰度圖,建議二值圖像(最好是Canny/拉普拉斯等邊緣檢測算子處理后的)
//countours:"vector<vector<Point>>contours"一個雙重向量,向量內每個元素保存了一組由連續(xù)的point點構成的點的集合的向量,每一組point點集就是一個輪廓
//hierarchy:"vector<Vec4i>hierarchy","Vec4i"是Vec<int,4>的別名,定義了一個“向量內每一個元素包含了四個int型變量”的向量
//mode:定義輪廓的檢索模式

?參數(shù)1? ? image?

單通道圖像矩陣。待提取輪廓的圖像,可以是灰度圖,常用的是二值圖(C++中可選擇使用Canny,拉普拉斯等邊緣檢測算法進行二值化)

?參數(shù)2? ? contours

定義為一個雙重向量? vector<vector<Point>> contours? 每一組Point都連續(xù),構成一組向量集合,在圖像上的顯示即為一個輪廓(點集),由于一張圖像往往包含很多對象,因此一個輪廓不足以描述圖像中的所有對象,因此還需要一個容器去包含所有的輪廓,我們稱這個包含所有輪廓的容器為輪廓集。所以我們有上述的雙重向量的定義方式。? ? 輪廓數(shù)量=contours的元素個數(shù)
?

?參數(shù)3? ? hierarchy?

定義為? vector<vector<int,4>>hierarchy? 或??vector<Vec4i>hierarchy,相當于hierarchy中的每個元素都是一個由4個int型組成的集合。直觀的表示可以參考列數(shù)為4,行數(shù)為n的二維矩陣。這四個int型數(shù)hierarchy[i][0]~hierarchy[i][3]分別表示后一個輪廓,前一個輪廓,父輪廓,內嵌輪廓的索引編號,如果當前輪廓所對應的這四個輪廓之一有缺失,比如說容器內的第一個輪廓為沒有前一個輪廓,則相應位置hierarchy[i][1]=-1。

此參數(shù)通常不需要進行傳值。

??參數(shù)4? ? ?mode?

該參數(shù)用于定義輪廓的檢索模式,一般有4種取值(也稱為4個

????????取值一:CV_RETR_EXTERNAL
????????CV_RETR_EXTERNAL只檢測最外圍輪廓,包含在外圍輪廓內的內圍輪廓被忽略

????????官方解釋為:CV_RETR_EXTERNAL retrieves only the extreme outer contours. It sets ????????hierarchy[i][2]=hierarchy[i][3]=-1 for all the contours.?
????????翻譯過來就是:CV_RETR_EXTERNAL ?只檢測最外層輪廓,對所有輪廓設置hierarchy[i][2]= ????????hierarchy[i][3]=-1

????????直觀的解釋就是:圖像檢測到一個同心圓的內輪廓外輪廓,由于外輪廓完全把內輪廓包含? ? ? ? ? ? 住了,因此只顯示外輪廓,


????????取值二:CV_RETR_LIST ??
????????CV_RETR_LIST檢測所有的輪廓,包括內圍、外圍輪廓,但是檢測到的輪廓不建立等級關? ? ? ? ? ? ? 系,彼此之間獨立,沒有等級關系,這就意味著這個檢索模式下不存在父輪廓或內嵌輪廓,? ? ? ? ? ? 所以hierarchy向量內所有元素的第3、第4個分量都會被置為-1(即hierarchy[i][2]=? ? ? ? ? ? ? ? ? ? ? ? ? hierarchy[i][3]=-1)

? ? ? ? 官方解釋為:CV_RETR_LIST retrieves all of the contours without establishing any? ? ? ? ? ? ? ? ? ? ? ? hierarchical relationships.?
? ? ? ? 翻譯過來就是:CV_RETR_LIST:返回所有的輪廓,但是不建立輪廓的拓撲關系,所以? ? ? ? ? ? ? ? ? hierarchical為空。


????????取值三:CV_RETR_CCOMP ?

????????檢測所有的輪廓,但所有輪廓只建立兩個等級關系,外圍為頂層,若外圍內的內圍輪廓還包? ? ? ? ? ? 含了其他的輪廓信息,則內圍內的所有輪廓均歸屬于頂層

????????官方解釋為:CV_RETR_CCOMP retrieves all of the contours and organizes them into a? ? ? ? ? ? ? two-level hierarchy. At the top level, there are external boundaries of the components. At the? ? ? ? ? second level, there are boundaries of the holes. If there is another contour inside a hole of a? ? ? ? ? connected component, it is still put at the top level.?
????????翻譯過來就是:CV_RETR_CCOMP:提取所有輪廓,并且將其組織為雙層結構。頂層(the? ? ? ? ? ? top levell)為連通域的外圍邊界,次層(the second level)為孔(hole)的內層邊界,如果孔(hole)? ? ? ? ? 中還有其它輪廓,那么這個輪廓被劃分為頂層(the top levell)。


????????取值四:CV_RETR_TREE

????????檢測所有輪廓,所有輪廓建立一個等級樹結構。外層輪廓包含內層輪廓,內層輪廓還可以繼? ? ? ? ? ? 續(xù)包含內嵌輪廓。

????????官方解釋為:CV_RETR_TREE retrieves all of the contours and reconstructs a full hierarchy? ? ? ? ? of nested contours. This full hierarchy is built and shown in the OpenCV contours.c demo.?
????????翻譯過來就是:CV_RETR_TREE:返回所有的輪廓,并且建立完整的拓撲結構

參數(shù)5? ? ?method

用于定義輪廓的近似方法

????????取值一:CV_CHAIN_APPROX_NONE?
? ? ? ? 保存物體邊界上所有連續(xù)的輪廓點一般用的比較多

????????官方解釋為:CV_CHAIN_APPROX_NONE stores absolutely all the contour points. That is,? ? ? ? ? any 2 subsequent points (x1,y1) and (x2,y2) of the contour will be either horizontal, vertical? ? ? ? ? ? or diagonal neighbors, that is, max(abs(x1-x2),abs(y2-y1))==1.?
????????翻譯過來為:存儲所有的輪廓點。這種方法下,兩個連續(xù)的輪廓點,要么是水平相鄰的,要? ? ? ? ? ? 么是垂直相鄰的, 要么是對角相鄰的,即滿足max(abs(x1-x2),abs(y2-y1))==1.?


????????取值二:CV_CHAIN_APPROX_SIMPLE?
? ? ? ? 僅保存輪廓的拐點信息,把所有輪廓拐點保存至contours向量內,拐點與拐點之間直線段上? ? ? ? ? ? 的信息點不予保留

????????官方解釋為:CV_CHAIN_APPROX_SIMPLE compresses horizontal, vertical, and diagonal? ? ? ? ? segments and leaves only their end points. For example, an up-right rectangular contour is? ? ? ? ? ? encoded with 4 points.?
????????翻譯過來為:壓縮水平方向、垂直方向和對角線方向的中間點,只保留某個方向的終點坐? ? ? ? ? ? ? 標,例如一個矩形輪廓只需4個點來保持輪廓信息。


????????取值三和四:CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS

????????使用teh-Chinl chain 近似算法

????????官方解釋為:CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS applies? ? ? ? ? one of the flavors of the Teh-Chin chain approximation algorithm. See [TehChin89] for? ? ? ? ? ? ? ? ? ? details.?
????????翻譯過來為:使用The-Chinl鏈逼近算法中的一個

?參數(shù)6? ? offset :Point類型,輪廓相對于原輪廓的偏移量(? ? 通常使用默認的值 (0,0)? ? )

通常以一個坐標形式 Point 的參數(shù)(40,30)出現(xiàn)。(40,30)意思是將輪廓向右移動40個像素,再向下移動30個像素,若數(shù)值過大可能會出現(xiàn)溢出報錯。

本篇學習筆記,答謝以下兩位作者:(第一個鏈接包含官方解釋及翻譯,第二個鏈接包含部分宏名的效果圖及一些比較好理解的解釋方式。

利用OpenCV的函數(shù)findContours()和函數(shù)drawContours()進行輪廓的檢測與繪制_昊虹圖像算法的博客-CSDN博客

findContours函數(shù)參數(shù)詳解_-牧野-的博客-CSDN博客_findcontours函數(shù)文章來源地址http://www.zghlxwxcb.cn/news/detail-468726.html

到了這里,關于學習筆記:C++環(huán)境下OpenCV的findContours函數(shù)的參數(shù)詳解及優(yōu)化的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • VS2017環(huán)境下使用C++和OpenCV獲取攝像頭參數(shù)的代碼實戰(zhàn)

    本文將介紹如何在VS2017環(huán)境下使用C++和OpenCV查看攝像頭參數(shù)。通過使用使用OpenCV庫的相關函數(shù),獲取攝像頭的幀率、寬度、高度、亮度、對比度和飽和度等參數(shù)。 ? 首先,我們需要在代碼中導入OpenCV庫,以便使用OpenCV的相關函數(shù)。在C++中,可以使用以下代碼導入OpenCV庫: 接

    2024年02月07日
    瀏覽(32)
  • 【C++】【Opencv】minMaxLoc()函數(shù)詳解和示例

    【C++】【Opencv】minMaxLoc()函數(shù)詳解和示例

    minMaxLoc()函數(shù) 是 OpenCV 庫中的一個函數(shù),用于找到一個多維數(shù)組中的最小值和最大值,以及它們的位置。這個函數(shù)對于處理圖像和數(shù)組非常有用。本文通過參數(shù)和示例詳解,幫助大家理解和使用該函數(shù)。 函數(shù)原型: 參數(shù)詳解: 在這個示例中,我們首先讀取一張灰度圖像。

    2024年02月03日
    瀏覽(83)
  • 【C++入門 三】學習C++缺省參數(shù) | 函數(shù)重載 | 引用

    【C++入門 三】學習C++缺省參數(shù) | 函數(shù)重載 | 引用

    缺省參數(shù)是聲明或定義函數(shù)時為函數(shù)的參數(shù)指定一個缺省值。在調用該函數(shù)時,如果沒有指定實參則采用該形參的缺省值,否則使用指定的實參。 ①全缺省參數(shù) ②半缺省參數(shù) 注意: 1. 半缺省參數(shù)必須從右往左依次來給出,不能間隔著給 2. 缺省參數(shù)不能在函數(shù)聲明和定義中

    2024年02月06日
    瀏覽(24)
  • 【C++學習】C++入門 | 缺省參數(shù) | 函數(shù)重載 | 探究C++為什么能夠支持函數(shù)重載

    【C++學習】C++入門 | 缺省參數(shù) | 函數(shù)重載 | 探究C++為什么能夠支持函數(shù)重載

    上一篇文章我介紹了C++該怎么學,什么是命名空間,以及C++的輸入輸出, 這里是傳送門:http://t.csdn.cn/Oi6V8 這篇文章我們繼續(xù)來學習C++的基礎知識。 目錄 寫在前面: 1. 缺省參數(shù) 2. 函數(shù)重載 3. C++是如何支持函數(shù)重載的 寫在最后: 在學習C語言的時候,如果一個函數(shù)存在參數(shù)

    2024年02月13日
    瀏覽(25)
  • 【C++】【Opencv】cv::Canny()邊緣檢測函數(shù)詳解和示例

    【C++】【Opencv】cv::Canny()邊緣檢測函數(shù)詳解和示例

    Canny邊緣檢測是一種流行的邊緣檢測算法,由John F. Canny在1986年開發(fā)。它是一種多階段過程,包括噪聲濾波、計算圖像強度的梯度、非最大值抑制以及雙閾值檢測。本文通過函數(shù)原型解讀和示例對cv::Canny()函數(shù)進行詳解,以幫助大家理解和使用。 Canny邊緣檢測的步驟如下: (

    2024年02月04日
    瀏覽(52)
  • opencv 入門學習筆記(C++)

    opencv 入門學習筆記(C++)

    4.1.2 Mat 結構的使用 ? 關于Mat類,我們首先要知道的是: (1)不必再手動為其開辟空間。 (2)不必再在不需要時立即將空間釋放 總結: OpenCV 函數(shù)中輸出圖像的內存分配是自動完成的 使用opencv的c++結構時不需要考慮內存釋放的問日 賦值運算符和拷貝構造函數(shù) Mat B(A) 只復制

    2024年02月03日
    瀏覽(41)
  • 【C++】【Opencv】cv::warpAffine()仿射變換函數(shù)詳解,實現(xiàn)平移、縮放和旋轉等功能

    【C++】【Opencv】cv::warpAffine()仿射變換函數(shù)詳解,實現(xiàn)平移、縮放和旋轉等功能

    仿射變換是一種二維變換,它可以將一個二維圖形映射到另一個二維圖形上,保持了圖形的“形狀”和“大小”不變,但可能會改變圖形的方向和位置。仿射變換可以用一個線性變換矩陣來表示,該矩陣包含了六個參數(shù),可以進行平移、縮放、旋轉等操作。通過原理、函數(shù)和

    2024年02月05日
    瀏覽(94)
  • 【opencv C++版本】安裝和學習 ==Windows下使用VSCode配置OpenCV開發(fā)環(huán)境

    ref:https://opencv.org/releases/ ref:https://www.cnblogs.com/ticlab/p/16817542.html c_cpp_properties.json 照著ref 沒安裝成功,先寫個二分查找把 ref:https://docs.opencv.org/4.x/df/d65/tutorial_table_of_content_introduction.html nnd,用這個ref在ubuntu20.04 上安裝成功了?。?!咳咳咳 ref:https://blog.csdn.net/weixin_4479667

    2024年02月14日
    瀏覽(22)
  • 【C++】【Opencv】cv::GaussianBlur、cv::filter2D()函數(shù)詳解和示例

    【C++】【Opencv】cv::GaussianBlur、cv::filter2D()函數(shù)詳解和示例

    本文通過函數(shù)詳解和運行示例對cv::GaussianBlur和cv::filter2D()兩個函數(shù)進行解讀,最后綜合了兩個函數(shù)的關系和區(qū)別,以幫助大家理解和使用。 cv::GaussianBlur 是 OpenCV 庫中的一個函數(shù),用于對圖像進行高斯模糊。高斯模糊是一種常見的圖像降噪技術,它通過使用高斯函數(shù)對圖像進

    2024年02月04日
    瀏覽(41)
  • OpenCV 學習筆記(C++)(1.4W字)

    OpenCV 學習筆記(C++)(1.4W字)

    Mat基本結構 Mat對象數(shù)據(jù)組成:頭部和數(shù)據(jù)部分,頭部存儲圖像的屬性(大小、寬高、圖像類型:浮點數(shù)類型、字節(jié)類型、16位整型、32位整型、雙精度浮點型,通道數(shù)量和獲取途徑),數(shù)據(jù)部分存儲所有像素值(像素點)的集合 使用賦值方法,可以將源Mat對象賦值給另一個

    2024年02月11日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包