مطابقة القوالب المتعددة NCC

الدرس المرئي 8 - مطابقة القوالب NCC:https://singtown.com/learn/49598/

طريقة مطابقة القوالب المتعددة مشابهة أساسًا لمطابقة القالب الواحد. كل ما عليك فعله هو تخزين عدة قوالب والوصول إليها مسبقًا. يمكنك استخدام الكود التالي.

# Template Matching Example - Normalized Cross Correlation (NCC)
#
# يوضح هذا المثال كيفية استخدام وظيفة NCC في كاميرا OpenMV لمطابقة جزء صغير من الصورة
# مع أجزاء مختلفة من الصورة... ما لم تكن البيئة قابلة للتحكم الشديد، فإن NCC ليست مفيدة دائمًا.
#
# تحذير: دعم NCC بحاجة إلى إعادة عمل! حتى الآن، تتطلب هذه الوظيفة الكثير من العمل لتصبح مفيدة.
# سيوضح هذا السكربت وجود الوظيفة، لكنها في حالتها الحالية غير كافية.

import csi
import time, csi, image
csi0 = csi.CSI()

from image import SEARCH_EX, SEARCH_DS
#استيراد SEARCH_EX وSEARCH_DS من وحدة image. استخدام from import يستورد فقط الجزأين
#المطلوبين SEARCH_EX وSEARCH_DS، دون استيراد وحدة image بالكامل.

# إعادة تعيين المستشعر
csi0.reset()

# ضبط إعدادات المستشعر
csi0.contrast(1)
csi0.gainceiling(16)
# أقصى دقة لمطابقة القوالب باستخدام SEARCH_EX هي QQVGA
csi0.framesize(csi.QQVGA)
# يمكنك ضبط النافذة (windowing) لتقليص صورة البحث.
#csi0.window(((640-80)//2, (480-60)//2, 80, 60))
csi0.pixformat(csi.GRAYSCALE)

# تحميل القالب.
# يجب أن يكون القالب صورة رمادية صغيرة (مثلاً 32x32 بكسل).
templates = ["0.pgm", "1.pgm", "2.pgm", "6.pgm"] #تخزين عدة قوالب
#تحميل صور القوالب

clock = time.clock()

# تشغيل مطابقة القوالب
while (True):
    clock.tick()
    img = csi0.snapshot()

    # find_template(template, threshold, [roi, step, search])
    # ROI: صف القيم (tuple) الذي يمثل منطقة الاهتمام (x, y, w, h).
    # Step: خطوة الحلقة المستخدمة (y+=step, x+=step)، استخدم خطوة أكبر لجعلها أسرع.
    # Search إما image.SEARCH_EX للبحث الشامل أو image.SEARCH_DS للبحث الماسي (diamond search)
    #
    # ملاحظة 1: يجب أن يكون ROI أصغر من الصورة وأكبر من القالب.
    # ملاحظة 2: في البحث الماسي (diamond search)، يتم تجاهل كل من step وROI.
    for t in templates:
        template = image.Image(t)
        #المرور على كل قالب وإجراء مطابقة القوالب عليه
        r = img.find_template(template, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))
    #find_template(template, threshold, [roi, step, search])، القيمة 0.7 في
    #threshold هي عتبة التشابه، وroi هي منطقة إجراء المطابقة (المستطيل الذي رأسه العلوي الأيسر عند (10، 0)، بطول 80 وعرض 60)،
    #لاحظ أن حجم roi يجب أن يكون أكبر من صورة القالب وأصغر من إطار الصورة (framebuffer).
    #وضع علامة على الصورة المطابقَة
        if r:
            img.draw_rectangle(r)
            print(t) #طباعة اسم القالب

    #print(clock.fps())

تأثير التشغيل كما هو موضح في الشكل:

الإخراج في الطرفية (Terminal):

results matching ""

    No results matching ""