我有一個OpenCV應用程序從辦公室內部的網絡攝像頭流(很多的細節)餵食,我必須找到一個人造標記。該標記是白色背景上的黑色正方形。我使用Canny來查找邊緣和cvFindContours輪廓,然後使用approxPolyDP和co。爲過濾和尋找候選人,然後使用本地直方圖進一步過濾,bla bla bla ...OpenCV轉換Canny邊緣到輪廓
這或多或少,但不完全如我所願。即使Canny創建一個非閉合線,FindContours總是返回一個閉環。我在輪廓線兩側形成一個輪廓,形成一個循環。對於Canny圖像(我的標記)的封閉邊緣,我得到2個輪廓,一個在內側,另一個在外側。 我不得不與該操作問題:
我得到2周的輪廓的每個標記(沒那麼嚴重)
最瑣碎過濾不可用(拒絕非閉合輪廓)
所以我的問題:是否有可能獲得非閉合Canny邊緣的非閉合輪廓? 或者解決上述兩個問題的標準方法是什麼?
Canny是一個非常好的工具,但我需要一種方式將2D b/w圖像轉換爲易於處理的東西。像連接組件一樣按組件的行進順序列出所有像素。所以我可以過濾循環,並將其饋入approxPolyDP。
更新:我錯過了一些重要的細節:標記可以在任何方向(它不是面向相機,沒有直角),實際上我正在做的是3D方向估計,基於2D投影標記。
我並不真正同意編輯,因爲findContours()和drawContours()不一定在相同的圖像上操作,除非您要立即垃圾輪廓圖像通過透視。該編輯還刪除了來自Canny()的findContours()的輸入信息。 –