find_line_segments.py

# هذا العمل مرخص بموجب ترخيص MIT.
# حقوق النشر (c) 2013-2023 OpenMV LLC. جميع الحقوق محفوظة.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# مثال العثور على قطع الخطوط (Line Segments)
#
# يوضح هذا المثال كيفية العثور على قطع الخطوط في الصورة. لكل كائن خط
# يتم العثور عليه في الصورة، يتم إرجاع كائن خط يتضمن دوران الخط (rotation).

# تعثر find_line_segments() على خطوط ذات طول محدود (لكنها بطيئة).
# استخدم find_line_segments() للعثور على خطوط غير لا نهائية (وهي سريعة).

import csi
import time

ENABLE_LENS_CORR = False  # قم بتفعيلها للحصول على خطوط أكثر استقامة...

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)  # التدرج الرمادي (grayscale) أسرع
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، يتم دمج أي خط يبعد بكسل واحد عن خط آخر... وهكذا
    # كلما زدت هذه القيمة. قد ترغب في دمج الخطوط لأن اكتشاف قطع الخطوط
    # ينتج عنه الكثير من نتائج قطع الخطوط.

    # تتحكم `max_theta_diff` في أقصى قدر من فرق الدوران بين
    # أي خطين على وشك الدمج. يسمح الإعداد الافتراضي بفرق 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 ""