find_circles.py

# この作品はMITライセンスの下で提供されています。
# Copyright (c) 2013-2023 OpenMV LLC. 全著作権所有。
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# 円の検出の例
#
# この例では、ハフ変換を使用して画像内で円を検出する方法を示します。
# 変換。https://en.wikipedia.org/wiki/Circle_Hough_Transform
#
# find_circles() メソッドは、完全に
# 画像内に収まっている円のみを検出することに注意してください。画像/ROI からはみ出す円は無視されます...

import csi
import time

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)  # グレースケールの方が高速です
csi0.framesize(csi.QQVGA)
csi0.snapshot(time=2000)

clock = time.clock()

while True:
    clock.tick()
    img = csi0.snapshot().lens_corr(1.8)

    # 円オブジェクトは x、y、r (半径)、magnitude の 4 つの値を持ちます。
    # magnitude は円の検出の強さを表します。値が大きいほど
    # 良いことを示します...

    # `threshold` は検出される円の数を制御します。その値を増やすと
    # 検出される円の数が減少します...

    # `x_margin`、`y_margin`、`r_margin` は、x、y、r (半径) 方向における
    # 類似した円の結合を制御します。

    # r_min、r_max、r_step は、テストされる円の半径の範囲を制御します。
    # テストする円の半径の数を減らすと、パフォーマンスが大幅に向上します。

    for c in img.find_circles(
        threshold=2000,
        x_margin=10,
        y_margin=10,
        r_margin=10,
        r_min=2,
        r_max=100,
        r_step=2,
    ):
        img.draw_circle(c, color=(255, 0, 0))
        print(c)

    print("FPS %f" % clock.fps())

results matching ""

    No results matching ""