opencv-debugtool

bbqz007發表於2024-10-29

將原來cvtool倉庫重新命名為opencv-debugtool。並打包兩個win32平臺下的程式包,分別對於opencv3跟opencv4。

這是一個用來除錯opencv程式處理流的簡易工具。主要是幾年前用於opencv3跟opencv4。工具設計成filter-pipelining模式,將處理流的每個演算法處理作為一個filter,每個filter提供引數設定以及處理後的影像輸出結果。一般地,用於識別跟探測的演算法放在最後一個filter。所以使用N個filter就會有多於N影像視窗輸出。空格鍵會執行影像源的下一幀。mouse左鍵可以劃區域,mouse中鍵雙擊確定提交區域。

如果cvtool.h沒有你要求的filter,你只需要實現一個itf_filter的自定義filter,並實現方法itf_filter::_filter(Mat&)。不要忘記在工廠方法createFilter新增你的自定義filter。所有filter執行在filter_graph,以推模式生產Mat結果傳遞到下一filter。

倉庫地址:

https://github.com/bbqz007/opencv-debugtool

https://gitee.com/bbqz007/opencv-debugtool

下載地址

https://github.com/bbqz007/opencv-debugtool/releases

首先來看舊檢測haarcascade。

cvtool %YourImageSoureFile% cascade可以執行你的訓練結果。

cvtool %YourImageSoureFile% anno可以幫助生成annotations。只要按住ctrl並用mouse左鍵劃一個矩形區,多個矩形區可以重疊,然後雙擊mouse中指鍵就會生成pos跟neg。生成好足夠多的素材後,就可以透過opencv_createsamples生成訓練素材,再配合opencv_traincascade進行訓練。命令可以參考倉庫的TRAINING.REC.MD

經過漫長生命消耗後,得到訓練結果cascade.xml檔案,並放到cascade目錄下,執行cvtool於cascade就可以觀察效果。當然了一開始效果不理想,需要新增素材,這時可以anno,cascade配搭使用。一邊觀察效果,一邊新增素材。當有一幀cascade視窗顯示識別效果不好,就可以在anno視窗劃物件區域新增素材。一輪下來又累積了不少素材,又可以進入再次訓練愉快地消耗生命,然後就不斷再次又再次,重複又重複,一連五晚務求讓ML睇真D。

除了透過ML的檢測方法外,opencv還有其它非ML用於檢測方法。

使用matchtemplate演算法。進行對比匹配。找相似目標。

cvtool %YourImageSoureFile% match。開啟filter_graph後,在select視窗用mouse左鍵劃一目標小方塊,就會執行matchetemplate檢測目標小方塊。輸出有兩個視窗,一個視窗輸出混合原圖跟匹配結果,另一個視窗輸出演算法結果Mat。當然你還可以在match前置各種影像處理filter。

使用blob演算法,檢測物件。下例配合高斯模糊處理。

cvtool %YourImageSoureFile% morphology,blob

使用contours演算法找輪廓。

cvtool %YourImageSoureFile% pyrDown,pyrUp,morphology,channel,canny,contours

如果影像太亂,可以配合crop濾鏡,縮小檢測範圍。

cvtool %YourImageSoureFile% crop,pyrDown,pyrUp,morphology,channel,canny,contours

range,crop可以擦除背景