find_rects.py

# Эта работа лицензирована по лицензии MIT.
# Copyright (c) 2013-2023 OpenMV LLC. All rights reserved.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Пример поиска прямоугольников
#
# Этот пример демонстрирует, как находить прямоугольники на изображении с помощью алгоритма обнаружения
# четырёхугольников по порогу из кода April Tags. Этот алгоритм обнаружения по порогу четырёхугольников
# обнаруживает прямоугольники чрезвычайно надёжным способом и значительно превосходит методы, основанные на
# преобразовании Хафа. Например, он способен обнаруживать прямоугольники, даже если искажения объектива
# делают эти прямоугольники визуально изогнутыми. Скруглённые прямоугольники также не проблема!
# (Однако из-за этого код также будет обнаруживать окружности малого радиуса)...

import csi
import time

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)  # градации серого работают быстрее (максимум 160x120 на OpenMV-M7)
csi0.framesize(csi.QQVGA)
csi0.snapshot(time=2000)

clock = time.clock()

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

    # `threshold` ниже должен быть установлен достаточно высоким, чтобы отфильтровать шум —
    # прямоугольники, обнаруженные на изображении с низкими величинами краёв. Прямоугольники
    # имеют бóльшие величины краёв, чем они крупнее и контрастнее...

    for r in img.find_rects(threshold=10000):
        img.draw_rectangle(r, color=(255, 0, 0))
        for p in r.corners:
            img.draw_circle((p[0], p[1], 5), color=(0, 255, 0))
        print(r)

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

results matching ""

    No results matching ""