1. 程式人生 > >OpenCV使用霍夫變換檢測影象中的形狀

OpenCV使用霍夫變換檢測影象中的形狀

霍夫變換是一種被廣泛使用的利用數學等式的引數形式在影象中檢測形狀的技術。
例如直線、橢圓、圓等形狀。

霍夫變換可以檢測任何能以引數形式表示的形狀,隨著形狀的複雜(維數的增加,例如球體),計算的消耗也會增加。
我們通常考慮簡單的霍夫形狀,例如直線和圓。

霍夫直線

效果圖

效果圖

原圖

步驟

  1. 將影象置灰
  2. 呼叫Imgproc.HoughLinesP(cannyEdges, lines, 1, Math.PI / 180, 50, 20, 20) 方法獲取直線的資料

    • 第一個引數:影象輸入
    • 第二個引數:影象輸出
    • 第三個引數:影象指定畫素中r的解析度
    • 第四個引數:影象指定畫素中θ的解析度
    • 第五個引數:直線上點數的閾值
    • 第六個引數:直線上點數的最小值
  3. 在影象上繪製直線

封裝

使用

霍夫圓

效果圖

效果圖

原圖

步驟

霍夫圓與霍夫直線類似,只是等式改變了,呼叫

Imgproc.HoughCircles(cannyEdges, circles, Imgproc.CV_HOUGH_GRADIENT, 1, cannyEdges.rows() / 15);

獲取圓的資料

封裝

使用