find_line_segments.py

# この作品はMITライセンスの下で提供されています。
# Copyright (c) 2013-2023 OpenMV LLC. 全著作権所有。
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# 線分の検出の例
#
# この例では、画像内で線分を検出する方法を示します。検出された各ライン
# オブジェクトには、そのラインの回転角度を含むライン情報が返されます。

# find_line_segments() は有限長のラインを検出します(ただし低速です)。
# 非無限長のラインを検出するには find_line_segments() を使用してください(高速です)。

import csi
import time

ENABLE_LENS_CORR = False  # より直線的なラインを得るには有効にします...

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

clock = time.clock()

# すべてのラインには、端点を取得するための `x1`、`y1`、`x2`、`y2` 属性もあります。
# ライン オブジェクトは `draw_line()` に直接渡すことができます。

while True:
    clock.tick()
    img = csi0.snapshot()
    if ENABLE_LENS_CORR:
        img.lens_corr(1.8)  # 2.8mm レンズの場合...

    # `merge_distance` は近接するラインの結合を制御します。0 (デフォルト) の場合、
    # 結合は行われません。1 の場合、他のラインから 1 ピクセル以内にあるラインが結合されます...これは
    # この値を増やすほど広がっていきます。線分検出は多数の線分の結果を生成するため、
    # ラインを結合したい場合があります。

    # `max_theta_diff` は、結合しようとする 2 本のライン間の
    # 回転角度の差の最大値を制御します。デフォルト設定では 15 度まで許容されます。

    for l in img.find_line_segments(merge_distance=0, max_theta_diff=5):
        img.draw_line(l, color=(255, 0, 0))
        # print(l)

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

results matching ""

    No results matching ""