find_lines.py

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

# ملاحظة: يتم اكتشاف الخطوط باستخدام تحويل هَف (Hough Transform):
# http://en.wikipedia.org/wiki/Hough_transform
# يرجى قراءة المعلومات أعلاه لمعرفة المزيد حول معنى `theta` و`rho`.

# تعثر find_lines() على خطوط ذات طول لا نهائي. استخدم 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()

# تحتوي جميع كائنات الخطوط على خاصية `theta` للحصول على زاوية دورانها بالدرجات.
# يمكنك تصفية الخطوط بناءً على زاوية دورانها.

min_degree = 0
max_degree = 179

# تحتوي جميع الخطوط أيضًا على خصائص `x1` و`y1` و`x2` و`y2` للحصول على نقاط نهايتها.
# يمكن تمرير كائنات الخط مباشرة إلى `draw_line()`.

while True:
    clock.tick()
    img = csi0.snapshot()
    if ENABLE_LENS_CORR:
        img.lens_corr(1.8)  # لعدسة 2.8mm...

    # تتحكم `threshold` في عدد الخطوط التي يتم العثور عليها في الصورة. يتم اكتشاف الخطوط فقط التي
    # يكون مجموع مقدار فرق الحواف فيها أكبر من `threshold`...

    # المزيد حول `threshold` - يساهم كل بكسل في الصورة بقيمة مقدار (magnitude)
    # لخط ما. مجموع كل المساهمات هو المقدار الخاص بذلك الخط. بعد ذلك
    # عند دمج الخطوط تُجمع مقاديرها معًا. لاحظ أن `threshold`
    # تقوم بتصفية الخطوط ذات المقادير المنخفضة قبل الدمج. لرؤية مقدار
    # الخطوط غير المدمجة، اضبط `theta_margin` و`rho_margin` على 0...

    # تتحكم `theta_margin` و`rho_margin` في دمج الخطوط المتشابهة. إذا كان خطان
    # لهما فروق في قيم theta وrho أقل من الهوامش، فسيتم دمجهما.

    for l in img.find_lines(threshold=1000, theta_margin=25, rho_margin=25):
        if (min_degree <= l.theta) and (l.theta <= max_degree):
            img.draw_line(l, color=(255, 0, 0))
            # print(l)

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

# حول قيم rho السالبة:
#
# صف (tuple) [theta+0:-rho] هو نفسه [theta+180:+rho].

results matching ""

    No results matching ""