2013-06-22 61 views
0

我幾天前開始使用OpenCV,我的目標是檢測一個圓圈和它的中心,我已經使用hough變換,我正在使用一個分辨率爲640x480的攝像頭,
它正在工作,但圓圈不斷變化它的位置,更好地解釋它我在YouTube上發佈了屏幕抓取https://www.youtube.com/watch?v=6EGePHkGrok
這裏是代碼http://pastebin.com/zRG4Yfzy,是的,我知道它有點混亂。
首先顯示完整的視頻,當相機穩定時,按下ESC,然後處理在ROI 250x250上開始。
我已經添加了幾個trackbars來改變hough變換和模糊量的參數,改變模糊量並不能解決問題
如何穩定圓圈?此外,相機不會移動,因此不需要跟蹤。 或者我應該採用一種全新的方法來做到這一點?
根據我的理解,我需要應用某種過濾器。
該對象具有許多圓形輪廓,但都具有相同的中心,因此任何圓形輪廓都可以很好地檢測到。

PS:我不是圖像處理專家,我修補了來自各種網站和書籍的代碼如何使用opencv穩定視頻流中的圓圈?

回答

1

霍夫變換已知容易出錯。

對於您的情況,您可能會在圖像中找到輪廓,並按圓形度對它們進行過濾。

1-灰度

2-低通濾波器(高斯模糊)

3- Canny邊緣檢測

4-找到的輪廓和列出他們的區域。在你的輪廓上畫出5分鐘的封閉圓圈。

6-選擇具有最接近輪廓區域的最小包圍圓區域的輪廓。

7使用moments F3型「質量中心」

+0

輪廓的質發現中心將嘗試這一點,並張貼幫忙的結果,謝謝。 –

+0

哇..感謝它的工作比霍夫圈好多了,這裏是結果https://www.youtube.com/watch?v=jYx-snPt3aI,它需要一些調整,但..謝謝你:) –

+0

Np,和作爲一種改進,您可能需要使用opencv的[blobdetector類](http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_feature_detectors.html#simpleblobdetector);而不是步驟3-7 :)我最近和這個班合作過,它比暴力試圖更快,你可以應用幾種過濾。 – baci