霍夫變換是一種被廣泛使用的利用數學等式的參數形式在圖像中檢測形狀的技術。
例如直線、橢圓、圓等形狀。
霍夫變換可以檢測任何能以參數形式表示的形狀,隨着形狀的複雜(維數的增加,例如球體),計算的消耗也會增加。
我們通常考慮簡單的霍夫形狀,例如直線和圓。
霍夫直線
效果圖
步驟
- 將圖像置灰
調用
Imgproc.HoughLinesP(cannyEdges, lines, 1, Math.PI / 180, 50, 20, 20)
方法獲取直線的數據- 第一個參數:圖像輸入
- 第二個參數:圖像輸出
- 第三個參數:圖像指定像素中
r
的解析度 - 第四個參數:圖像指定像素中
θ
的解析度 - 第五個參數:直線上點數的閾值
- 第六個參數:直線上點數的最小值
在圖像上繪製直線
封裝
使用
霍夫圓
效果圖
步驟
霍夫圓與霍夫直線類似,只是等式改變了,調用
Imgproc.HoughCircles(cannyEdges, circles, Imgproc.CV_HOUGH_GRADIENT, 1, cannyEdges.rows() / 15);
獲取圓的數據