تقدم HALCON 21.11

وصول سريع إلى وظائف HALCON ، الإصدار 21.11.0.0
كل الحقوق محفوظة. لا يجوز إعادة إنتاج أي جزء من هذا المنشور أو تخزينه في نظام استرجاع أو نقله بأي شكل أو بأي وسيلة ، إلكترونية أو ميكانيكية أو عن طريق التصوير أو التسجيل أو غير ذلك ، دون إذن كتابي مسبق من الناشر.
حقوق النشر © 2003-2021 لشركة MVTec Software GmbH ، ميونخ ، ألمانيا
محمية ببراءات الاختراع التالية: US 7,239,929،7,751,625،7,953,290، US 7,953,291،8,260,059،8,379,014، US 8,830,229،XNUMX،XNUMX، US XNUMX،XNUMX،XNUMX، US XNUMX،XNUMX،XNUMX، US XNUMX،XNUMX،XNUMX، US XNUMX،XNUMX،XNUMX. مزيد من براءات الاختراع المعلقة.
Microsoft و Windows و Windows Server 2008/2012/2012 R2 / 2016 و Windows 7/8 / 8.1 / 10 و Microsoft .NET و Visual C ++ و Visual Basic هي إما علامات تجارية أو علامات تجارية مسجلة لشركة Microsoft Corporation.
Linux هي علامة تجارية لشركة Linus Torvalds.
macOS و OpenCL علامتان تجاريتان لشركة Apple Inc.
تُعد NVIDIA و CUDA و cuBLAS و cuDNN إما علامات تجارية أو علامات تجارية مسجلة لشركة NVIDIA Corporation.
OpenGL هي علامة تجارية لشركة Silicon Graphics، Inc.
جميع العلامات التجارية والأسماء التجارية الأخرى المعترف بها وطنيا ودوليا معترف بها بموجب هذا.
يمكن العثور على مزيد من المعلومات حول HALCON على: http://www.halcon.com/
حول هذا الدليل
يقدم لك هذا الدليل تعريفًا بـ HALCON. إنه مخصص للمبتدئين دون معرفة مسبقة بـ HALCON.
يمكن أيضًا استخدام هذا الدليل كدليل مرجعي للعديد من أدلة HALCON الأخرى ، حيث أنه يربط بينها وفقًا للموضوعات التالية:
- تثبيت HALCON (الصفحة 7)
يقدم هذا الفصل برنامج MVTec Software Manager (SOM). - HALCON Architecture (الصفحة 9)
هناك حاجة إلى بعض الخلفية النظرية لفهم ماهية HALCON وكيف يعمل. - كيفية تطوير التطبيقات (الصفحة 15)
يشرح هذا الفصل ثلاث طرق أساسية للتطوير باستخدام HALCON ويرشدك خلال أول مثال على البرمجةampليه. - كيفية المتابعة (صفحة 19)
يشير هذا الفصل إلى مصادر إضافية للمعلومات.
تثبيت HALCON
لمستخدمي Linux و Windows ، نوصي بتنزيل HALCON وتثبيته عبر MVTec Software Manager (SOM). SOM هو مدير تثبيت لحزم البرامج. يوفر الوصول إلى سجل cata-log للمنتجات ، ويدعم ، من بين ميزات أخرى ، تنزيل الحزم وتثبيتها. يمكن العثور على مقدمة خطوة بخطوة حول كيفية تثبيت HALCON عبر SOM في دليل التثبيت.
هندسة هالكون
تم توضيح العمارة الأساسية لـ HALCON في الشكل 2.1. الجزء الرئيسي هو مكتبة معالجة الصور ، والتي تتكون من أكثر من 2000 مشغل. يمكنك أيضًا تطوير المشغلين الخاصين بك في شكل ما يسمى بحزم الشد السابق (الصفحة 11). أنت تستخدم عوامل التشغيل في تطبيقك عبر واجهات اللغة (الصفحة 11) مثل HALCON / C ++ أو HALCON / Python. هذه مكتبات تسمح بالاستخدام المباشر للمشغلين بأسلوب البرمجة النموذجي للغات البرمجة المختلفة.

الشكل 2.1: العمارة الأساسية لـ HALCON.
للوصول إلى أجهزة الحصول على الصور ، توفر HALCON واجهات الحصول على الصور (الصفحة 13) والتي تتيح لك استخدام أجهزة اكتساب مختلفة تمامًا بطريقة شائعة. يتم تحميل المكتبات التي تحتوي على عمليات التنفيذ الخاصة بالجهاز ديناميكيًا عند الحاجة. بنفس الطريقة ، يتم الوصول إلى أجهزة الإدخال / الإخراج من خلال واجهات الإدخال / الإخراج الخاصة بالجهاز (صفحة 13).
المشغلين
عندما يتم استخدام أي نوع من الوظائف من مكتبة HALCON ، يتم ذلك عبر عامل تشغيل. يشتمل معظمهم على طرق متعددة ، يتم تحديدها عبر المعلمات. يمكن العثور على قائمة كاملة بجميع المشغلين في مرجع مشغل HALCON المتاح في صيغ HDevelop و .NET و Python و C ++ و C. الميزات الهامة للمشغلين هي:
- لا يوجد تسلسل هرمي بين المشغلين. من نقطة هندسة البرمجيات view، جميع المشغلين على نفس المستوى.
- بالطبع ، هناك مجموعات منطقية من المشغلين. على سبيل المثالample ، يمكن ملاحظة ذلك من خلال الفئات المقدمة لـ C ++ و .NET ، حيث يعتبر المشغلون الذين يعالجون نفس نوع البيانات وظائف أعضاء في الفئات المقابلة.
- يتبع تصميم المشغلين قواعد العمارة المفتوحة. لذلك ، يمكنك إنشاء أدوات التشغيل الخاصة بك وبالتالي تمديد HALCON (انظر القسم 2.2). يحتوي دليل مبرمج حزمة التمديد على معلومات مفصلة حول توسيع مكتبة المشغل.
- يمكن للعديد من المشغلين الاستفادة بشفافية من الموازاة التلقائية ، مما يتيح طريقة سهلة لتسريع البرنامج عند استخدام صور كبيرة على كمبيوتر متعدد المعالجات أو متعدد النواة. يمكن العثور على معلومات مفصلة عن البرمجة المتوازية في المذكرة الفنية "البرمجة الموازية" ، وكذلك في "دليل البرامج".
- لدى المشغلين قواعد معيارية لطلب معلمات الإدخال والإخراج: رمز الإدخال ، وأيقونة الإخراج ، والتحكم في الإدخال ، والتحكم في الإخراج (انظر القسم 2.1.1). قد لا تكون هناك حاجة إلى كل المجموعات لمشغل معين. بشكل عام ، لا يتم تعديل معلمات الإدخال للمشغلين ، مما ينتج عنه دلالات واضحة وبسيطة. لا يوجد سوى عدد قليل من الاستثناءات لهذا التصميم ، على سبيل المثال ، set_grayval و overpaint_gray و overpaint_region.
المعلمات وهياكل البيانات
لدى HALCON نوعان أساسيان من المعلمات: البيانات الأيقونية وبيانات التحكم. الصور والمناطق و XLDs (وصف الخط الموسع) تنتمي إلى البيانات الأيقونية.
الصور تتكون بشكل أساسي من قنوات ، أي مصفوفات تحتوي على قيم بكسل. جميع قنوات الصورة لها نفس الحجم. للحصول على معلومات مفصلة حول وحدات البكسل والقنوات ، يرجى قراءة فصل "صورة" من مرجع مشغل HALCON.
لكل صورة ، يحدد ما يسمى بمنطقة الاهتمام (ROI) أي جزء من الصورة تتم معالجته. يمكن تعريف عائد الاستثمار بمرونة كبيرة (من مستطيل بسيط إلى مجموعة من وحدات البكسل غير المتصلة). للحصول على تفاصيل حول معالجة عائد الاستثمار ، راجع دليل الحل 27 ، منطقة الاهتمام في الصفحة XNUMX.
المناطق هي مجموعة من البكسل. لا يلزم توصيل وحدات البكسل في المنطقة. يمكن حتى التعامل مع مجموعة عشوائية من وحدات البكسل كمنطقة واحدة. مع اتصال المشغل ، يمكن تقسيم المنطقة إلى مناطقها المتصلة ، أي مكونات تتكون من وحدات بكسل متصلة.
XLDs تشمل جميع البيانات القائمة على الكنتور والمضلع. عوامل تشغيل دقيقة البكسل مثل edges_sub_pix تعيد الخطوط العريضة كبيانات XLD. الكفاف هو سلسلة من نقاط التحكم ثنائية الأبعاد ، والتي ترتبط بخطوط. عادةً ما تكون المسافة بين نقاط التحكم حوالي بكسل واحد. تحتوي كائنات XLD ، إلى جانب نقاط التحكم ، على ما يسمى بالسمات المحلية والعالمية. مثال نموذجيampليه لهذه ، على سبيل المثال ، الحافة ampخط نقطة التحكم أو معلمات الانحدار لمقطع كفاف. إلى جانب استخراج كائنات XLD ، يدعم HALCON المزيد من المعالجة. السابقampلهذا الغرض ، يتم اختيار الأكفة بناءً على نطاقات ميزات معينة لتجزئة المحيط إلى خطوط أو أقواس أو مضلعات أو موازيات.
تتضمن بيانات التحكم مقابض وأنواع بيانات أساسية مثل عدد صحيح ، حقيقي ، سلسلة.
مقابض هي إشارات إلى هياكل البيانات المعقدة ، على سبيل المثال ، اتصال بواجهة الحصول على الصور أو نموذج للمطابقة القائمة على الشكل. لأسباب تتعلق بالكفاءة وأمان البيانات ، لا يتم تمرير الهيكل بأكمله ولكن المقبض فقط بين المشغلين. المقابض هي قيم سحرية يجب عدم تغييرها ويمكن أن تختلف من تنفيذ إلى تنفيذ ومن إصدار إلى إصدار. يتم مسحها تلقائيًا بمجرد الكتابة فوق جميع المراجع. السابقamples حيث يتم استخدام المقابض هي نوافذ رسومية ، files والمآخذ وواجهات الحصول على الصور و OCR و OCV والقياس والمطابقة.
حزم التمديد
قد يتم تمديد HALCON بواسطة مشغلين جدد. على الرغم من أن HALCON يحتوي بالفعل على مجموعة وفيرة من المشغلين لمختلف المهام ، فقد ترغب في تنفيذ عوامل تشغيل جديدة ، على سبيل المثال ، للوصول إلى جهاز خاص أو لتنفيذ خوارزمية بديلة. للقيام بذلك ، يوفر HALCON واجهة حزمة الامتداد ، والتي تسمح بدمج المشغلين الجدد (المطبق في C) في شكل ما يسمى بحزم الامتداد. تحتوي واجهة حزمة الامتداد على العديد من الإجراءات ووحدات الماكرو المحددة مسبقًا لتسهيل معالجة بيانات الصورة وكائنات الذاكرة في C. بمجرد دمج عامل تشغيل جديد بنجاح ، يمكن استخدامه مثل أي مشغل HALCON آخر. يحتوي دليل مبرمج حزمة التمديد على معلومات مفصلة حول توسيع مكتبة المشغل.
واجهات اللغة
كما هو موضح في الشكل 2.1 في الصفحة 9 ، يوفر HALCON ما يسمى واجهات اللغة. هذه هي روابط اللغة الأصلية ، والتي تمكنك من استدعاء المشغلين واستخدام أنواع بيانات HALCON مباشرة من داخل التطبيق الخاص بك ، سواء كان ذلك Python أو C أو C ++ أو .NET.
لبدء التطوير ، نوصي بالتحقق أولاً من أحد البرامج السابقة الجاهزة للتشغيلampلو البرامج. هنا ، يمكنك معرفة كيفية إعداد المشروع وكيفية استخدام المشغلين والأنواع.
لكل واجهة لغة ، قد تختلف أسماء الأنواع والفئات واصطلاحات تسمية المشغلين وما إلى ذلك لتتوافق مع القواعد النموذجية التي تنطبق على اللغة المحددة. تم توثيق تواقيع المشغل للغات البرمجة المدعومة في مرجع مشغل HALCON.
هالكون / بايثون
تتميز واجهة Python ببساطتها وقدرتها على إنشاء نماذج أولية سريعة. يتم استدعاء عوامل HALCON مباشرة كوظائف قائمة بذاتها ، بعد استيراد وحدة HALCON / Python. لاحظ أيضًا أن معلمات المشغل في HALCON / Python تنقسم إلى معلمات دالة (مدخلات) وقيم إرجاع (مخرجات).
Example
يقرأ الكود التالي صورة ويحسب عدد المناطق المتصلة بها (صفحة 10).
img = ha.read_image ('pcb')
المنطقة = عتبة هكتار (img ، 0 ، 122)
num_regions = ha.count_obj (اتصال ha. (منطقة))
طباعة (f'Number of zone: {num_regions} ')
للحصول على المتطلبات الأساسية وإرشادات تفصيلية ، يرجى الاطلاع على دليل المبرمج ، الجزء 4 ، أول مثالampليه.
هالكون / سي
واجهة C هي أبسط واجهة يدعمها HALCON. يتم تمثيل كل مشغل إما بوظيفة واحدة أو وظيفتين حيث يكون اسم المشغل وتسلسل المعلمة متطابقين مع لغة HDevelop.
Example
يقرأ الكود التالي صورة ويحسب عدد المناطق المتصلة بها (صفحة 10).
Hobject img؛
read_image (& img، “ثنائي الفينيل متعدد الكلور”) ؛
منطقة هوبجيكت
عتبة (img ، ®ion ، 0 ، 122) ؛
مناطق متصلة بالكائن ؛
اتصال (المنطقة ، والمناطق_المتصلة) ؛
عدد المناطق هلونغ = 0 ؛
count_obj (مناطق_متصلة ، & عدد_المناطق) ؛
printf ("عدد المناطق:٪" PRIdPTR "\ n" ، عدد_المناطق) ؛
للحصول على المتطلبات الأساسية وإرشادات تفصيلية ، يرجى الاطلاع على دليل المبرمج ، الجزء 5 ، أول مثالampليه.
هالكون / C ++
واجهة C ++ أكثر تعقيدًا من واجهة C. هنا ، advantagيتم استخدام es من C ++ والبرمجة الموجهة للكائنات ، أي التحويل التلقائي للنوع ، والبناء والتدمير ، أو وظائف التجميع مع بياناتهم في فئات. كما هو الحال في واجهة C ، يتم توفير الوظائف العامة لكل مشغل HALCON لنمط إجرائي من البرمجة.
Example
يقرأ الكود التالي صورة ويحسب عدد المناطق المتصلة بها (صفحة 10).
HImage img {“pcb”}؛
منطقة HRegion = img.Threshold (0 ، 122) ؛
Hlong numRegions = region.Connection (). CountObj () ؛
std :: cout << "عدد المناطق:" << numRegions << '\ n'؛
للحصول على المتطلبات الأساسية وإرشادات تفصيلية ، يرجى الاطلاع على دليل المبرمج ، الجزء 2 ، أول مثالampليه.
هالكون / دوت نت
يستخدم C # و Visual Basic .NET HALCON عبر واجهة .NET.
بشكل مشابه لـ C ++ ، يتم تقديم نمطين من البرمجة: إجرائي وموجه للكائنات. بالنسبة للأسلوب الإجرائي ، توفر الفئة HOperatorSet جميع عوامل تشغيل HALCON ، حيث يتم استخدام HObject للتعامل مع البيانات المميزة ويتم استخدام HTuple للتحكم في البيانات. بالنسبة للأسلوب الموجه للكائنات ، يتم توفير فئات مثل HDataCode2d أو HMeasure أو HShapeModel للوظائف المركزية. بالإضافة إلى ذلك ، تتوفر فئات للبيانات الأيقونية ، مثل HImage أو HRegion.
Example
يقرأ الكود التالي صورة ويحسب عدد المناطق المتصلة بها (صفحة 10).
HImage img = new HImage (“pcb”)؛
منطقة HRegion = img.Threshold (0d ، 122d) ؛
int numRegions = region.Connection (). CountObj () ؛
Console.WriteLine (“عدد المناطق:” + numRegions) ؛
للحصول على المتطلبات الأساسية وإرشادات تفصيلية ، يرجى الاطلاع على دليل المبرمج ، الجزء 3 ، أول مثالampليه.
واجهات الحصول على الصور
تشكل واجهات الحصول على الصور الخاصة بـ HALCON الجسر بين البرامج التي توفرها الشركة المصنعة لجهاز الحصول على الصور و HALCON. إنها تشكل واجهة مشتركة عامة تتطلب مجموعة صغيرة من المشغلين فقط. يرجى الرجوع إلى دليل الحلول II-A للحصول على معلومات مفصلة حول هذا الموضوع.
حاليًا ، توفر HALCON واجهات لأكثر من 50 ملتقط إطار ومئات من الكاميرات الصناعية في شكل مكتبات قابلة للتحميل ديناميكيًا (Windows: DLLs ؛ أنظمة تشبه Unix: مكتبات مشتركة). تبدأ أسماء المكتبات بالبادئة hAcq ؛ يتم استخدام المكتبات التي تنتهي باللاحقة xl بواسطة HALCON XL.
تم بالفعل تثبيت الواجهات الأكثر استخدامًا استنادًا إلى معايير الصناعة مع HALCON li-braries. يمكن تنزيل واجهات إضافية ، بالإضافة إلى أحدث الإصدارات من الواجهات المضمنة بالفعل ضمن https://www.mvtec.com/products/interfaces. قد تتغير واجهات الحصول على صور HALCON بشكل متكرر أكثر من مكتبة HALCON نفسها. أحد أسباب ذلك هو أن MVTec تطور باستمرار واجهات جديدة ؛ علاوة على ذلك ، إذا تغيرت البرامج التي توفرها الشركات المصنعة لأجهزة الحصول على الصور ، على سبيل المثال ، إذا تم دمج ميزات جديدة ، فسيتم تكييف واجهات HALCON المقابلة. يرجى أيضًا الرجوع إلى مرجع واجهة الحصول على الصور للحصول على قائمة كاملة بواجهات الحصول على الصور المدعومة.
بمجرد تثبيت جهاز الحصول على الصور الخاص بك بنجاح ، كل ما عليك فعله للوصول إليه من HALCON هو الاتصال بالمشغل open_framegrabber ، وتحديد اسم واجهة الحصول على الصورة وبعض المعلومات الإضافية ، على سبيل المثال ، فيما يتعلق بالكاميرا المتصلة. بعد ذلك ، يمكن التقاط الصور عن طريق استدعاء عامل التشغيل grab_image (أو grab_image_async).
I / O واجهات
يوفر HALCON واجهات للعديد من أجهزة الإدخال / الإخراج لتمكين الحصول على البيانات. تتوفر هذه الواجهات كمكتبات قابلة للتحميل ديناميكيًا (Windows: DLLs ؛ أنظمة تشبه Unix: مكتبات مشتركة). تبدأ أسماء المكتبات بالبادئة hio ؛ يتم استخدام المكتبات التي تنتهي باللاحقة xl بواسطة HALCON XL.
توفر واجهات جهاز HALCON I / O وصولاً موحدًا إلى أجهزة إدخال / إخراج مختلفة باستخدام مجموعة صغيرة من المشغلين. بعد تثبيت جهاز الإدخال / الإخراج الخاص بك ، يتم إنشاء اتصال باستخدام المشغل open_io_device ، وتحديد اسم واجهة جهاز الإدخال / الإخراج ، واختيارياً ، بعض المعلمات الخاصة بالجهاز. بمجرد إنشاء الاتصال ، يمكن فتح قناة إرسال عن طريق استدعاء open_io_channel. لقراءة وكتابة القيم على هذه القناة ، استخدم عوامل التشغيل read_io_channel و write_io_channel ، على التوالي.
يرجى ملاحظة أن واجهات جهاز HALCON I / O قد تتغير بشكل متكرر أكثر من مكتبة HALCON نفسها. يمكنك العثور على أحدث المعلومات مع الواجهات القابلة للتنزيل (بما في ذلك الوثائق) ضمن https://www.mvtec.com/products/interfaces. يرجى أيضًا الرجوع إلى مرجع واجهة جهاز الإدخال / الإخراج للحصول على قائمة كاملة بواجهات أجهزة الإدخال / الإخراج المدعومة.
كيفية تطوير التطبيقات
نوصي بأن تبدأ بالنماذج الأولية السريعة في HDevelop ، بيئة التطوير التفاعلية لمكتبة رؤية آلة HALCON. يمكنك استخدام HDevelop للعثور على عوامل التشغيل والمعلمات المثلى لحل مهمة تحليل الصور الخاصة بك. بعد تطوير برنامج HDevelop وفقًا للمتطلبات المحددة ، يجب ترجمته إلى بيئته النهائية. لهذا ، يمكنك الاختيار من بين الأساليب الثلاثة التالية ، اعتمادًا على تفضيلاتك:
- بدء من لا شيء: تعني كتابة برنامجك من البداية ترجمة كود تطوير HD الخاص بك إلى لغة البرمجة المستهدفة (C ++ ، Python…) يدويًا. كما ذكرنا سابقًا ، قد تختلف اصطلاحات تسمية المشغلين وأسماء الفئات وما إلى ذلك بين لغات البرمجة. ألق نظرة على مرجع مشغل HALCON للحصول على توقيعات عامل HALCON لكل لغة برمجة مدعومة. للحصول على معلومات حول كيفية إنشاء التطبيقات باللغة الهدف التي تريدها ، يرجى قراءة دليل المبرمج.
- تصدير كود تطوير HD: قم بترجمة كود HDevelop الخاص بك إلى لغة البرمجة المستهدفة تلقائيًا باستخدام تصدير كود HDevelop.
- مشروع مكتبة التصدير: ينشئ تصدير مكتبة HDevelop مجلد مشروع جاهز للاستخدام ، بما في ذلك التفاف لكل رمز في اللغة الهدف و CMake file لبناء المشروع. يستخدم تصدير مكتبة HDevelop HDevEngine ، وهي مكتبة تعمل كمترجم فوري. يتيح لك HDevEngine تنفيذ برامج أو إجراءات HDevelop مباشرةً من تطبيق مكتوب بلغة C ++ أو أي لغة يمكنها دمج كائنات .NET. وبالتالي ، لا يتعين عليك إعادة ترجمة التطبيق بالكامل عند إجراء تغييرات على رمز HDevelop.
بالطبع ، يمكنك استخدام محرك HDevEngine بدون استخدام وظيفة تصدير مكتبة HDevelop. كيفية استخدام HDevEngine موصوفة بالتفصيل في دليل المبرمج ، الجزء 6 (استخدام HDevEngine).
HD تطوير
دعونا نلقي نظرة أولية على HDevelop. يوضح الشكل 3.1 واجهة مستخدم HDevelop ، بعد تحميل البرنامج وتنفيذه جزئيًا.
بشكل افتراضي ، تكون هذه النوافذ مرئية ، وهي ضرورية أيضًا للتطوير باستخدام HDevelop:
- نافذة الرسومات تعرض النتائج (المتوسطة) ، وهي البيانات الأيقونية (الصفحة 10) مثل الصور والمناطق و XLDs.
- نافذة البرنامج هذا هو المكان الذي تكتب فيه رمز البرنامج الخاص بك ، باستخدام عوامل التشغيل (الصفحة 10) للوصول إلى طرق معالجة الصور الخاصة بـ HALCON.
- نافذة متغيرة تعرض جميع المتغيرات ، أي المتغيرات الأيقونية ومتغيرات التحكم. تحتوي المتغيرات الأيقونية على بيانات أيقونية (صفحة 10) وتحتوي متغيرات التحكم على بيانات تحكم (صفحة 10).
يمكن العثور على معلومات مفصلة حول HDevelop في دليل مستخدم HDevelop. تقدم مقاطع الفيديو التعليمية الخاصة بنا أيضًا مقدمة جيدة لـ HDevelop:
- برنامج HDevelop 01: واجهة المستخدم الرسومية والملاحة
- HDevelop تعليمي 02: المتغيرات
- برنامج تعليمي لـ HDevelop 03: التصور

الشكل 3.1: واجهة مستخدم HDevelop.
Exampلو البرنامج
الآن بعد أن تعرفت على واجهة مستخدم HDevelop والمفاهيم الأساسية لـ HALCON (الصفحة 9) ، دعنا نطور تطبيق C ++ باستخدام نهج Library Export.
بالإضافة إلى الإرشادات التالية خطوة بخطوة ، نوصيك بمشاهدة مقاطع الفيديو التعليمية الخاصة بنا: دمج كود تطوير HD في تطبيق C ++ باستخدام Library Project Export
دمج كود HDevelop في تطبيق C # باستخدام Library Project Export
توضح مقاطع الفيديو تصدير المكتبة وتوفر المزيد من المعلومات الأساسية حول الموضوع.
إنشاء نموذج أولي في HDevelop
مهمة السابق التاليample هو قراءة صورة وإحصاء عدد المناطق المتصلة بها.
- افتح HDevelop وأدخل الكود التالي في نافذة البرنامج:
read_image (صورة ، "ثنائي الفينيل متعدد الكلور")
العتبة (الصورة ، المنطقة ، 0 ، 122)
اتصال (المنطقة ، ConnectedRegions)
count_obj (ConnectedRegions، Number) - اختبر البرنامج بالنقر فوق تشغيل في شريط الأدوات أو الضغط على F5.
لدمج رمز HDevelop هذا بسهولة في تطبيق فعلي ، نقوم بتغليف جزء رؤية الماكينة في إجراء محلي.
- قم بتمييز سطور التعليمات البرمجية التالية: عتبة (صورة ، منطقة ، 0 ، 122) اتصال (منطقة ، ConnectedRegions) count_obj (ConnectedRegions ، Number)
- انقر بزر الماوس الأيمن لفتح قائمة السياق.
- اختر إنشاء إجراء جديد.
- سمها count_regions.
- حدد المعلمات وقم بتغيير نظام التحديد إلى First In ، Last Out.
- تأكيد بالموافقة.
- احفظ برنامج HDevelop الخاص بك باسم hdev_count_regions.hdev
تحضير مشروع Visual Studio
في هذا المثال السابقampلو ، سوف نستخدم Visual Studio 2019. 1
- قم بإنشاء مشروع C ++ Windows Console فارغ وقم بتسميته vs_count_regions. يرجى تفعيل خيار وضع الحل والمشروع في نفس الدليل. 2
- أضف مصدر C ++ file (قائمة مشروع إضافة عنصر جديد ... C ++ File) وقم بتسميته vs_count_regions.cpp.
- اختر النظام الأساسي للحل x64 من القائمة المنسدلة في شريط الأدوات.
- افتح خصائص مشروعك (Menu Project vs_count_regions Properties…) وقم بإجراء الإعدادات التالية:
- حدد C / C ++ عام وأضف أدلة التضمين الإضافية التالية: $ (HALCONROOT) \ include؛ $ (HALCONROOT) \ include \ halconcpp؛
- حدد Linker General وأضف دليل المكتبة الإضافية التالي: $ (HALCONROOT) \ lib \ $ (HALCONARCH)؛
- حدد إدخال الرابط وأضف التبعيات الإضافية التالية: halconcpp.lib؛ hdevenginecpp.lib؛
تصدير مشروع المكتبة
بعد ذلك ، نقوم بتصدير برنامج HDevelop hdev_count_regions.hdev إلى مجلد مشروع Visual Studio الخاص بنا.
- افتح برنامج HDevelop الذي تم إنشاؤه مسبقًا hdev_count_regions.hdev.
- يفتح File تصدير مشروع المكتبة ...
- قم بإجراء الإعدادات التالية:
- مدخل file: البرنامج الحالي
- لغة الهدف: C ++
- اسم المشروع: hdev_count_regions
- موقع المشروع: اختر موقع مشروع Visual Studio vs_count_regions.
- مساحة الاسم: hdev_count_regions
- أكد مع التصدير.
الآن ، يجب أن يحتوي مجلد مشروع Visual Studio vs_count_regions على البيانات التالية على الأقل:
- vs_count_regions.cpp (المصدر File)
- vs_count_regions.sln (الحل)
- hdev_count_regions (مجلد من تصدير HDevelop)
- سي ماك
- res_ hdev_ count_ المناطق
- hdev _ count_ المناطق. hdev
- مصدر
- hdev_count_regions.cpp
- hdev_count_regions.h
- CMakeLists.txt
دمج مشروع المكتبة في Visual Studio
أخيرًا ، يتعين علينا دمج برنامج HDevelop في مشروع Visual Studio الخاص بنا.
- افتح مشروع Visual Studio.
- افتح مشروع إضافة عنصر موجود ... واختر C ++ file hdev_count_regions.cpp والرأس file hdev_count_regions.h ، تم إنشاؤه بواسطة تصدير مكتبة HDevelop. (ال files موجودة في المجلد hdev_count_regions source.)
- أدخل الكود التالي في vs_count_regions.cpp:
#يشمل
# تضمين "HalconCpp.h"
# تضمين "hdev_count_regions / source / hdev_count_regions.h"
int main()
{
HalconCpp :: HImage Image (“pcb”)؛
hdev_count_regions :: SetResourcePath (“hdev_count_regions / res_hdev_count_regions”) ؛
HalconCpp :: HTuple Number {} ؛
hdev_count_regions :: count_regions (صورة ورقم) ؛
std :: cout << “عدد المناطق:” << Number.L () << '\ n'؛
} - قم بتنفيذ البرنامج. → تفتح وحدة التحكم ، وتظهر النتيجة "عدد المناطق: 43".
كيف تستمر
للتعمق في HALCON ، نقدم المزيد من الوثائق والدعم.
- HDevelop على سبيل المثالampلو البرامج
يوفر HALCON مجموعة واسعة من example ، ليس فقط من أجل HDevelop ولكن أيضًا للغات البرمجة المختلفة. هؤلاء السابقينampيمكن العثور على les في الدليل المشار إليه بواسطة متغير البيئة٪ HALCONEXAMPLES٪ أو ، إذا لم يتم تعيين المتغير ، في الدليل الفرعي exampليه من المجلد الذي قمت بتثبيت HALCON فيه.
لفتح ملف HDevelopampلو البرنامج ، حدد القائمة File تصفح HDevelop Exampلو البرامج…. للمبتدئين ، نوصي بتحديد السابقينample من فئة التطبيق المجال. - الخدمات والدعم
ملكنا webموقع https://www.mvtec.com/ services-support يقدم مجموعة متنوعة من الدعم ، على سبيل المثالample مقاطع الفيديو التعليمية ، ومعلومات حول ورش العمل والدورات التدريبية ، وركن المطورين الذي يقدم النصائح والحيل ، وغير ذلك الكثير. - وثائق HALCON
يوفر التوثيق ثروة من المعلومات ، من موضوعات المبتدئين إلى معرفة الخبراء. على سبيل المثالample ، تصف أدلة الحلول الخاصة بنا طرق رؤية الماكينة وكيفية تطبيقها في HDevelop. نقطة البداية الجيدة هي دليل الحلول I الذي يعرّفك على طرق رؤية الماكينة الرئيسية.
انتهىview يمكن العثور على جميع الكتيبات مع وصف موجز في صفحة إدخال الوثائق.
المستندات / الموارد
![]() |
تقدم HALCON 21.11 [بي دي اف] دليل المستخدم 21.11 التقدم ، 21.11 ، التقدم |





