HALCON 21.11 პროგრესი

სწრაფი წვდომა HALCON-ის ფუნქციონირებაზე, ვერსია 21.11.0.0
Ყველა უფლება დაცულია. ამ პუბლიკაციის არცერთი ნაწილის რეპროდუცირება, შენახვა ძიების სისტემაში ან გადაცემა არ შეიძლება რაიმე ფორმით ან ნებისმიერი საშუალებით, ელექტრონული, მექანიკური, ფოტოკოპირებით, ჩანაწერით ან სხვაგვარად, გამომცემლის წინასწარი წერილობითი ნებართვის გარეშე.
საავტორო უფლება © 2003-2021 მიერ MVTec Software GmbH, მიუნხენი, გერმანია
დაცულია შემდეგი პატენტებით: აშშ 7,239,929, აშშ 7,751,625, 7,953,290 აშშ, 7,953,291 აშშ, 8,260,059 აშშ, 8,379,014 აშშ, 8,830,229 აშშ. ელოდება შემდგომი პატენტები.
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 არის ინსტალაციის მენეჯერი პროგრამული პაკეტებისთვის. ის უზრუნველყოფს წვდომას პროდუქტების დისტანციურ კატალოგზე და, სხვა ფუნქციებთან ერთად, მხარს უჭერს პაკეტების ჩამოტვირთვასა და ინსტალაციას. ნაბიჯ-ნაბიჯ შესავალი, თუ როგორ უნდა დააინსტალიროთ HALCON SOM-ის საშუალებით, შეგიძლიათ იხილოთ ინსტალაციის სახელმძღვანელოში.
HALCON არქიტექტურა
HALCON-ის ძირითადი არქიტექტურა გამოსახულია ნახაზზე 2.1. ძირითადი ნაწილია გამოსახულების დამუშავების ბიბლიოთეკა, რომელიც შედგება 2000-ზე მეტი ოპერატორისგან. თქვენ ასევე შეგიძლიათ განავითაროთ საკუთარი ოპერატორები ეგრეთ წოდებული ex-tension პაკეტების სახით (გვერდი 11). თქვენ იყენებთ ოპერატორებს თქვენს აპლიკაციაში ენობრივი ინტერფეისების მეშვეობით (გვერდი 11), როგორიცაა HALCON/C++ ან HALCON/Python. ეს არის ბიბლიოთეკები, რომლებიც საშუალებას აძლევს ოპერატორების პირდაპირ გამოყენებას სხვადასხვა პროგრამირების ენების ტიპიური პროგრამირების სტილში.

სურათი 2.1: HALCON-ის ძირითადი არქიტექტურა.
გამოსახულების მიღების მოწყობილობების წვდომისთვის, HALCON გთავაზობთ გამოსახულების მიღების ინტერფეისებს (გვერდი 13), რომელიც საშუალებას გაძლევთ გამოიყენოთ საკმაოდ განსხვავებული შეძენის მოწყობილობები საერთო გზით. საჭიროების შემთხვევაში, ბიბლიოთეკები, რომლებიც შეიცავს მოწყობილობის სპეციფიკურ განხორციელებას, დინამიურად იტვირთება. ანალოგიურად, I/O მოწყობილობებზე წვდომა ხდება მოწყობილობის სპეციფიკური I/O ინტერფეისით (გვერდი 13).
ოპერატორები
როდესაც რაიმე სახის ფუნქცია გამოიყენება HALCON ბიბლიოთეკიდან, ეს ხდება ოპერატორის მეშვეობით. მათი უმეტესობა მოიცავს მრავალ მეთოდს, რომლებიც შეირჩევა პარამეტრების მიხედვით. ყველა ოპერატორის სრული სია შეგიძლიათ იხილოთ HALCON ოპერატორის მითითებაში, რომელიც ხელმისაწვდომია HDevelop, .NET, Python, C++ და C სინტაქსში. ოპერატორების მნიშვნელოვანი მახასიათებლებია:
- ოპერატორებს შორის იერარქია არ არსებობს. პროგრამული არქიტექტურის თვალსაზრისით viewყველა ოპერატორი ერთ დონეზეა.
- რა თქმა უნდა, არსებობს ოპერატორების ლოგიკური ჯგუფები. მაგampამის დანახვა შესაძლებელია C++-ისთვის და .NET-ისთვის შემოთავაზებული კლასებით, სადაც ოპერატორები, რომლებიც ამუშავებენ იმავე მონაცემთა ტიპს, არიან შესაბამისი კლასების წევრი ფუნქციები.
- ოპერატორების დიზაინი მიჰყვება ღია არქიტექტურის წესებს. ამიტომ, თქვენ შეგიძლიათ შექმნათ თქვენი საკუთარი ოპერატორები და ამით გააფართოვოთ HALCON (იხ. სექცია 2.2). Extension Package პროგრამისტის სახელმძღვანელო შეიცავს დეტალურ ინფორმაციას ოპერატორის ბიბლიოთეკის გაფართოების შესახებ.
- ბევრ ოპერატორს შეუძლია გამჭვირვალე გამოიყენოს ავტომატური პარალელიზება, რაც საშუალებას იძლევა მარტივი გზა დააჩქაროს პროგრამა მრავალპროცესორულ ან მრავალბირთვიან კომპიუტერზე დიდი სურათების გამოყენებისას. დეტალური ინფორმაცია პარალელური პროგრამირების შესახებ შეგიძლიათ იხილოთ ტექნიკურ შენიშვნაში პარალელური პროგრამირება, ასევე პროგრამის მერის გზამკვლევში.
- ოპერატორებს აქვთ შეყვანის და გამომავალი პარამეტრების შეკვეთის სტანდარტიზებული წესები: შეყვანის ხატულა, გამომავალი ხატი, შეყვანის კონტროლი და გამომავალი კონტროლი (იხ. სექცია 2.1.1). ყველა ჯგუფი შეიძლება არ იყოს საჭირო მოცემული ოპერატორისთვის. ზოგადად, ოპერატორების შეყვანის პარამეტრები არ იცვლება, რაც იწვევს ნათელ და მარტივ სემანტიკას. ამ დიზაინის მხოლოდ რამდენიმე გამონაკლისი არსებობს, მაგ., set_grayval, overpaint_gray და overpaint_region.
პარამეტრები და მონაცემთა სტრუქტურები
HALCON-ს აქვს ორი ძირითადი ტიპის პარამეტრი: iconic მონაცემები და საკონტროლო მონაცემები. სურათები, რეგიონები და XLD-ები (eXtented Line Description) ეკუთვნის საკულტო მონაცემებს.
სურათები შედგება ძირითადად არხებისგან, ანუ პიქსელის მნიშვნელობების შემცველი მატრიცებისგან. სურათის ყველა არხს აქვს იგივე ზომა. პიქსელებისა და არხების შესახებ დეტალური ინფორმაციისთვის, გთხოვთ, წაიკითხოთ HALCON ოპერატორის მითითების თავი „სურათი“.
თითოეული სურათისთვის ე.წ ინტერესის რეგიონი (ROI) განსაზღვრავს გამოსახულების რომელი ნაწილის დამუშავებას. ROI შეიძლება განისაზღვროს ძალიან მოქნილად (უბრალო მართკუთხედიდან უკავშირო პიქსელებამდე). ROI დამუშავების შესახებ დეტალებისთვის იხილეთ გადაწყვეტის სახელმძღვანელო I, ინტერესის რეგიონი 27 გვერდზე.
რეგიონები არის პიქსელების ნაკრები. რეგიონის პიქსელებს დაკავშირება არ სჭირდება. პიქსელების თვითნებური კოლექციაც კი შეიძლება დამუშავდეს როგორც ერთი რეგიონი. ოპერატორის მიერთებით რეგიონი შეიძლება დაიყოს თავის დაკავშირებულ რეგიონებად, ანუ კომპონენტებად, რომლებიც შედგება დაკავშირებული პიქსელებისგან.
XLD-ები მოიცავს ყველა კონტურულ და მრავალკუთხედზე დაფუძნებულ მონაცემებს. ქვეპიქსელებით ზუსტი ოპერატორები, როგორიცაა edges_sub_pix, აბრუნებენ კონტურებს XLD მონაცემებად. კონტური არის 2D საკონტროლო წერტილების თანმიმდევრობა, რომლებიც დაკავშირებულია ხაზებით. როგორც წესი, საკონტროლო წერტილებს შორის მანძილი დაახლოებით ერთი პიქსელია. XLD ობიექტები საკონტროლო წერტილების გარდა შეიცავს ეგრეთ წოდებულ ლოკალურ და გლობალურ ატრიბუტებს. ტიპიური ყოფილიamples ამისთვის არის, მაგ., ზღვარი ampსაკონტროლო წერტილის სიდიდე ან კონტურის სეგმენტის რეგრესიის პარამეტრები. XLD ობიექტების მოპოვების გარდა, HALCON მხარს უჭერს შემდგომ დამუშავებას. მაგamples ამისთვის არის კონტურების შერჩევა მოცემული მახასიათებლების დიაპაზონზე დაფუძნებული კონტურის სეგმენტაციისთვის ხაზებად, რკალებად, მრავალკუთხედებად ან პარალელებად.
საკონტროლო მონაცემები მოიცავს სახელურებს და მონაცემთა ძირითად ტიპებს, როგორიცაა მთელი რიცხვი, რეალური, სტრიქონი.
სახელურები არის მითითებები მონაცემთა კომპლექსურ სტრუქტურებზე, მაგ., კავშირი გამოსახულების შეძენის ინტერფეისთან ან ფორმებზე დაფუძნებული შესატყვისობის მოდელისთვის. ეფექტურობისა და მონაცემთა უსაფრთხოების მიზეზების გამო, არა მთელი სტრუქტურა, არამედ მხოლოდ სახელური გადადის ოპერატორებს შორის. სახელურები არის ჯადოსნური მნიშვნელობები, რომლებიც არ უნდა შეიცვალოს და შეიძლება განსხვავდებოდეს შესრულებადან შესრულებამდე და ვერსიიდან ვერსიამდე. ისინი ავტომატურად იშლება ყველა მითითების გადაწერის შემდეგ. მაგampსახელურები გამოიყენება გრაფიკული ფანჯრები, files, სოკეტები, გამოსახულების მიღების ინტერფეისები, OCR, OCV, გაზომვა და შესატყვისი.
გაფართოების პაკეტები
HALCON შეიძლება გაგრძელდეს ახალი ოპერატორების მიერ. მიუხედავად იმისა, რომ HALCON უკვე შეიცავს ოპერატორების უამრავ კომპლექტს სხვადასხვა ამოცანებისთვის, თქვენ შეიძლება გინდოდეთ ახალი ოპერატორების დანერგვა, მაგ., სპეციალურ აპარატურაზე წვდომა ან ალტერნატიული ალგორითმის დანერგვა. ამისთვის HALCON უზრუნველყოფს Extension Package Interface-ს, რომელიც საშუალებას იძლევა ახალი ოპერატორების (განხორციელებული C-ში) ინტეგრაცია ე.წ. გაფართოების პაკეტების სახით. გაფართოების პაკეტის ინტერფეისი შეიცავს რამდენიმე წინასწარ განსაზღვრულ რუტინას და მაკროს C-ში გამოსახულების მონაცემებისა და მეხსიერების ობიექტების მარტივი დამუშავებისთვის. მას შემდეგ, რაც ახალი ოპერატორი წარმატებით იქნება ინტეგრირებული, ის შეიძლება გამოყენებულ იქნას როგორც ნებისმიერი სხვა HALCON ოპერატორი. Extension Package პროგრამისტის სახელმძღვანელო შეიცავს დეტალურ ინფორმაციას ოპერატორის ბიბლიოთეკის გაფართოების შესახებ.
ენობრივი ინტერფეისები
როგორც ნაჩვენებია სურათზე 2.1 მე-9 გვერდზე, HALCON უზრუნველყოფს ე.წ. ენობრივ ინტერფეისებს. ეს არის მშობლიური ენის შეკვრა, რომელიც საშუალებას გაძლევთ დაურეკოთ ოპერატორებს და გამოიყენოთ HALCON მონაცემთა ტიპები პირდაპირ თქვენი აპლიკაციიდან, იქნება ეს Python, C, C++, თუ .NET.
განვითარების დასაწყებად, ჩვენ გირჩევთ, ჯერ შეამოწმოთ ერთ-ერთი მზა ექსპლუატაციაampპროგრამები. აქ თქვენ ხედავთ, როგორ უნდა შეიქმნას პროექტი და როგორ გამოიყენება ოპერატორები და ტიპები.
თითოეული ენის ინტერფეისისთვის, ტიპების სახელები, კლასები, ოპერატორების დასახელების კონვენციები და ა.შ. შეიძლება განსხვავდებოდეს, რათა შეესაბამებოდეს არჩეულ ენაზე არსებულ ტიპურ წესებს. ოპერატორის ხელმოწერები მხარდაჭერილი პროგრამირების ენებისთვის დოკუმენტირებულია HALCON ოპერატორის მითითებაში.
HALCON/Python
პითონის ინტერფეისი გამოირჩევა თავისი სიმარტივით და სწრაფი პროტოტიპების უნარით. HALCON ოპერატორებს უწოდებენ პირდაპირ, როგორც დამოუკიდებელი ფუნქციები, HALCON/Python მოდულის იმპორტის შემდეგ. ასევე გაითვალისწინეთ, რომ ოპერატორის პარამეტრები HALCON/Python-ში იყოფა ფუნქციის პარამეტრებად (შეყვანა) და დაბრუნებულ მნიშვნელობებად (გამომავალი).
Example
შემდეგი კოდი კითხულობს სურათს და ითვლის მასში დაკავშირებული რეგიონების რაოდენობას (გვერდი 10).
img = ha.read_image ('pcb')
რეგიონი = ჰა.ბარიერი (img, 0, 122)
რაიონების_რაოდენობა = ha.count_obj(ჰა.კავშირი(რეგიონი))
ბეჭდვა (f'რეგიონების რაოდენობა: {num_regions}')
წინაპირობებისთვის და დეტალური გაცნობისთვის, იხილეთ პროგრამისტის სახელმძღვანელო, ნაწილი 4, პირველი მაგალითიampლე.
HALCON/C
C ინტერფეისი არის უმარტივესი ინტერფეისი, რომელსაც მხარს უჭერს HALCON. თითოეული ოპერატორი წარმოდგენილია ერთი ან ორი გლობალური ფუნქციით, სადაც ოპერატორის სახელი და პარამეტრის თანმიმდევრობა HDevelop ენის იდენტურია.
Example
შემდეგი კოდი კითხულობს სურათს და ითვლის მასში დაკავშირებული რეგიონების რაოდენობას (გვერდი 10).
Hobject img;
წაკითხვის_სურათი (&img, "pcb");
ჰობიექტის რეგიონი;
ბარიერი (img, ®ion, 0, 122);
Hobject დაკავშირებული_რეგიონები;
კავშირი (რეგიონი, &დაკავშირებული_რეგიონები);
ჰლონგის რაიონების_რაოდენობა = 0;
count_obj(დაკავშირებული_რეგიონები, &რაიონების_რაოდენობა);
printf(“რეგიონების რაოდენობა: %” PRIdPTR “\n”, num_regions);
წინაპირობებისთვის და დეტალური გაცნობისთვის, იხილეთ პროგრამისტის სახელმძღვანელო, ნაწილი 5, პირველი მაგალითიampლე.
HALCON/C++
C++ ინტერფეისი ბევრად უფრო დახვეწილია, ვიდრე C ინტერფეისი. აი, ადვანიtagგამოიყენება C++-ის და ობიექტზე ორიენტირებული პროგრამირების es, ანუ ავტომატური ტიპის კონვერტაცია, მშენებლობა და განადგურება, ან ფუნქციების დაჯგუფება მათ მონაცემებთან ერთად კლასებად. C ინტერფეისის მსგავსად, HALCON-ის თითოეული ოპერატორის გლობალური ფუნქციები უზრუნველყოფილია პროგრამირების პროცედურული სტილისთვის.
Example
შემდეგი კოდი კითხულობს სურათს და ითვლის მასში დაკავშირებული რეგიონების რაოდენობას (გვერდი 10).
HImage img{“pcb”};
HRegion რეგიონი = img.Threshold(0, 122);
Hlong numRegions = region.Connection().CountObj();
std::cout << “რეგიონების რაოდენობა: ” << numრეგიონები << '\n';
წინაპირობებისთვის და დეტალური გაცნობისთვის, იხილეთ პროგრამისტის სახელმძღვანელო, ნაწილი 2, პირველი მაგალითიampლე.
HALCON/.NET
C# და Visual Basic .NET იყენებენ HALCON-ს .NET ინტერფეისის საშუალებით.
C++-ის ანალოგიურად, პროგრამირების ორი სტილია შემოთავაზებული: პროცედურული და ობიექტზე ორიენტირებული. პროცედურული სტილისთვის, კლასი HOperatorSet უზრუნველყოფს ყველა HALCON ოპერატორს, სადაც HObject გამოიყენება ხატოვანი მონაცემების დასამუშავებლად და HTuple გამოიყენება საკონტროლო მონაცემებისთვის. ობიექტზე ორიენტირებული სტილისთვის, კლასები, როგორიცაა HDataCode2d, HMeasure ან HShapeModel მოწოდებულია ცენტრალური ფუნქციონირებისთვის. გარდა ამისა, ხელმისაწვდომია საკულტო მონაცემების კლასები, მაგ., HImage ან HRegion.
Example
შემდეგი კოდი კითხულობს სურათს და ითვლის მასში დაკავშირებული რეგიონების რაოდენობას (გვერდი 10).
HImage img = ახალი 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-ის ბიბლიოთეკებთან ერთად. დამატებითი ინტერფეისები, ისევე როგორც უკვე ჩართული ინტერფეისების უახლესი ვერსიები, შეგიძლიათ ჩამოტვირთოთ ქვემოთ https://www.mvtec.com/products/interfaces. HALCON გამოსახულების მიღების ინტერფეისები შეიძლება შეიცვალოს უფრო ხშირად, ვიდრე თავად HALCON ბიბლიოთეკა. ამის ერთ-ერთი მიზეზი ის არის, რომ MVTec მუდმივად ავითარებს ახალ ინტერფეისებს; გარდა ამისა, თუ შეიცვლება გამოსახულების მიღების მოწყობილობების მწარმოებლების მიერ მოწოდებული პროგრამული უზრუნველყოფა, მაგ., თუ ახალი ფუნქციები იქნება ინტეგრირებული, შესაბამისი HALCON ინტერფეისები იქნება ადაპტირებული. გთხოვთ, ასევე მიმართოთ გამოსახულების შეძენის ინტერფეისის მითითებას მხარდაჭერილი სურათების შეძენის ინტერფეისების სრული სიისთვის.
მას შემდეგ რაც წარმატებით დააინსტალირებთ გამოსახულების მიღების მოწყობილობას, ყველაფერი რაც თქვენ უნდა გააკეთოთ HALCON-დან მასზე წვდომისთვის არის დაურეკოთ ოპერატორს open_framegrabber, მიუთითოთ გამოსახულების მიღების ინტერფეისის სახელი და რამდენიმე დამატებითი ინფორმაცია, მაგ., დაკავშირებული კამერის შესახებ. შემდეგ, სურათების აღება შესაძლებელია ოპერატორის grab_image (ან grab_image_async) დარეკვით.
I / O ინტერფეისი
HALCON უზრუნველყოფს ინტერფეისებს რამდენიმე I/O მოწყობილობისთვის, რათა მოხდეს მონაცემთა შეგროვება. ეს ინტერფეისები ხელმისაწვდომია დინამიურად ჩატვირთვის ბიბლიოთეკების სახით (Windows: DLLs; Unix-ის მსგავსი სისტემები: საერთო ბიბლიოთეკები). ბიბლიოთეკის სახელები იწყება hio პრეფიქსით; xl სუფიქსით დამთავრებული ბიბლიოთეკები გამოიყენება HALCON XL-ის მიერ.
HALCON I/O მოწყობილობის ინტერფეისები უზრუნველყოფს ერთიან წვდომას სხვადასხვა I/O მოწყობილობებზე ოპერატორების მცირე ნაკრების გამოყენებით. მას შემდეგ რაც დააინსტალირებთ თქვენს I/O მოწყობილობას, კავშირი დამყარებულია ოპერატორის open_io_device გამოყენებით, რომელიც მიუთითებს I/O მოწყობილობის ინტერფეისის სახელს და, სურვილისამებრ, მოწყობილობის სპეციფიკურ პარამეტრებს. კავშირის დამყარების შემდეგ, გადამცემი არხის გახსნა შესაძლებელია open_io_channel-ის დარეკვით. ამ არხზე მნიშვნელობების წასაკითხად და ჩასაწერად გამოიყენეთ ოპერატორები read_io_channel და write_io_channel, შესაბამისად.
გთხოვთ, გაითვალისწინოთ, რომ HALCON I/O მოწყობილობის ინტერფეისები შეიძლება უფრო ხშირად შეიცვალოს, ვიდრე თავად HALCON ბიბლიოთეკა. თქვენ შეგიძლიათ იპოვოთ უახლესი ინფორმაცია ჩამოტვირთვის ინტერფეისებთან ერთად (დოკუმენტაციის ჩათვლით). https://www.mvtec.com/products/interfaces. გთხოვთ, ასევე მიმართოთ I/O მოწყობილობის ინტერფეისის მითითებას მხარდაჭერილი I/O მოწყობილობის ინტერფეისების სრული სიისთვის.
როგორ განვავითაროთ აპლიკაციები
ჩვენ გირჩევთ, რომ დაიწყოთ სწრაფი პროტოტიპებით HDevelop-ში, HALCON მანქანური ხედვის ბიბლიოთეკის განვითარების ინტერაქტიული გარემო. თქვენ შეგიძლიათ გამოიყენოთ HDevelop, რათა იპოვოთ ოპტიმალური ოპერატორები და პარამეტრები თქვენი გამოსახულების ანალიზის ამოცანის გადასაჭრელად. მოცემული მოთხოვნების შესაბამისად HDevelop პროგრამის შემუშავების შემდეგ, ის უნდა გადაითარგმნოს საბოლოო გარემოში. ამისათვის თქვენ შეგიძლიათ აირჩიოთ შემდეგი სამი მიდგომა, თქვენი პრეფერენციებიდან გამომდინარე:
- დაიწყეთ ნულიდან: თქვენი პროგრამის ნულიდან დაწერა ნიშნავს თქვენი HDevelop კოდის ხელით თარგმნას სამიზნე პროგრამირების ენაზე (C++, Python…). როგორც უკვე აღვნიშნეთ, ოპერატორების დასახელების კონვენციები, კლასების სახელები და ა.შ. შეიძლება განსხვავდებოდეს პროგრამირების ენებს შორის. გადახედეთ HALCON ოპერატორის მითითებას, რომ მიიღოთ HALCON ოპერატორის ხელმოწერები თითოეული მხარდაჭერილი პროგრამირების ენისთვის. ინფორმაციისთვის, თუ როგორ უნდა შექმნათ აპლიკაციები თქვენთვის სასურველ სამიზნე ენაზე, გთხოვთ, წაიკითხოთ პროგრამისტის სახელმძღვანელო.
- HDevelop კოდის ექსპორტი: გადათარგმნეთ თქვენი HDevelop კოდი სამიზნე პროგრამირების ენაზე ავტომატურად HDevelop-ის კოდის ექსპორტის გამოყენებით.
- ბიბლიოთეკის ექსპორტის პროექტი: HDevelop-ის ბიბლიოთეკის ექსპორტი წარმოქმნის მზა პროექტის საქაღალდეს, მათ შორის wrap-per კოდი სამიზნე ენაზე და CMake file პროექტის ასაშენებლად. HDevelop-ის ბიბლიოთეკის ექსპორტი იყენებს HDevEngine-ს, ბიბლიოთეკას, რომელიც მოქმედებს როგორც თარჯიმანი. HDevEngine საშუალებას გაძლევთ პირდაპირ განახორციელოთ HDevelop პროგრამები ან პროცედურები C++-ზე დაწერილი აპლიკაციიდან ან ნებისმიერი ენიდან, რომელსაც შეუძლია .NET ობიექტების ინტეგრირება. ამრიგად, HDevelop კოდში ცვლილებების შეტანისას არ გჭირდებათ მთელი აპლიკაციის ხელახლა შედგენა.
რა თქმა უნდა, შეგიძლიათ გამოიყენოთ HDevEngine HDevelop-ის ბიბლიოთეკის ექსპორტის ფუნქციის გამოყენების გარეშე. როგორ გამოვიყენოთ HDevEngine დეტალურად არის აღწერილი პროგრამისტის სახელმძღვანელოში, ნაწილი 6 (HDevEngine-ის გამოყენება).
HD განვითარება
მოდით, პირველად გადავხედოთ HDevelop-ს. სურათი 3.1 გვიჩვენებს HDevelop-ის მომხმარებლის ინტერფეისს პროგრამის ჩატვირთვისა და ნაწილობრივ შესრულების შემდეგ.
ნაგულისხმევად, ეს ფანჯრები ჩანს, რომლებიც ასევე აუცილებელია HDevelop-ის განვითარებისთვის:
- გრაფიკული ფანჯარა აჩვენებს (შუალედურ) შედეგებს, კერძოდ, ხატოვან მონაცემებს (გვერდი 10), როგორიცაა სურათები, რეგიონები და XLD-ები.
- პროგრამის ფანჯარა აქ აკრიფებთ თქვენი პროგრამის კოდს ოპერატორების გამოყენებით (გვერდი 10) HALCON-ის გამოსახულების დამუშავების მეთოდებზე წვდომისთვის.
- ცვლადი ფანჯარა აჩვენებს ყველა ცვლადს, კერძოდ, ხატოვან ცვლადებს და საკონტროლო ცვლადებს. იკონური ცვლადები შეიცავს იკონურ მონაცემებს (გვერდი 10) და საკონტროლო ცვლადები შეიცავს საკონტროლო მონაცემებს (გვერდი 10).
დეტალური ინფორმაცია HDevelop-ის შესახებ შეგიძლიათ იხილოთ HDevelop მომხმარებლის სახელმძღვანელოში. ჩვენი სამეურვეო ვიდეო ასევე გვთავაზობს HDevelop-ის კარგ შესავალს:
- HDevelop ტუტორიალი 01: GUI და ნავიგაცია
- HDevelop ტუტორიალი 02: ცვლადები
- HDevelop ტუტორიალი 03: ვიზუალიზაცია

სურათი 3.1: HDevelop-ის მომხმარებლის ინტერფეისი.
Exampპროგრამა
ახლა, როდესაც თქვენ გაეცანით HDevelop-ის მომხმარებლის ინტერფეისს და HALCON-ის ძირითად ცნებებს (გვერდი 9), მოდით განვავითაროთ C++ აპლიკაცია ბიბლიოთეკის ექსპორტის მიდგომის გამოყენებით.
შემდეგი ნაბიჯ-ნაბიჯ ინსტრუქციების გარდა, ჩვენ გირჩევთ უყუროთ ჩვენი გაკვეთილის ვიდეოებს: HDevelop კოდის ინტეგრირება C++ აპლიკაციაში ბიბლიოთეკის პროექტის ექსპორტის გამოყენებით
HDevelop კოდის ინტეგრირება C# აპლიკაციაში ბიბლიოთეკის პროექტის ექსპორტის გამოყენებით
ვიდეოები ასახავს ბიბლიოთეკის ექსპორტს და გვაწვდის დამატებით ინფორმაციას თემის შესახებ.
შექმენით პროტოტიპი HDevelop-ში
დავალება შემდეგი ექსampეს არის სურათის წაკითხვა და მასთან დაკავშირებული რეგიონების რაოდენობის დათვლა.
- გახსენით HDevelop და შეიყვანეთ შემდეგი კოდი პროგრამის ფანჯარაში:
read_image (სურათი, 'pcb')
ბარიერი (სურათი, რეგიონი, 0, 122)
კავშირი (რეგიონი, დაკავშირებული რეგიონები)
count_obj (დაკავშირებული რეგიონები, ნომერი) - შეამოწმეთ თქვენი პროგრამა ინსტრუმენტთა პანელზე Run-ზე ან F5-ზე დაჭერით.
ამ HDevelop კოდის რეალურ აპლიკაციაში მარტივად ინტეგრირებისთვის, ჩვენ ვათავსებთ მანქანათმხედველობის ნაწილს ადგილობრივ პროცედურაში.
- მონიშნეთ შემდეგი კოდის ხაზები: ბარიერი (სურათი, რეგიონი, 0, 122) კავშირი (რეგიონი, დაკავშირებული რეგიონები) count_obj (დაკავშირებული რეგიონები, ნომერი)
- დააწკაპუნეთ მარჯვენა ღილაკით კონტექსტური მენიუს გასახსნელად.
- აირჩიეთ ახალი პროცედურის შექმნა.
- დაასახელეთ count_regions.
- აირჩიეთ პარამეტრები და შეცვალეთ შერჩევის სქემა პირველზე, ბოლოს გასვლაზე.
- დაადასტურეთ OK-ით.
- შეინახეთ თქვენი 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 ჩამოსაშლელი მენიუდან ხელსაწყოთა ზოლში.
- გახსენით თქვენი პროექტის თვისებები (მენიუ Project vs_count_regions Properties…) და გააკეთეთ შემდეგი პარამეტრები:
- აირჩიეთ C/C++ General და დაამატეთ შემდეგი Additional Include Directories:$(HALCONROOT)\include;$(HALCONROOT)\include\halconcpp;
- აირჩიეთ Linker General და დაამატეთ შემდეგი დამატებითი ბიბლიოთეკის დირექტორია:$(HALCONROOT)\lib\$(HALCONARCH);
- აირჩიეთ Linker Input და დაამატეთ შემდეგი დამატებითი დამოკიდებულებები: 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 Export-დან)
- სმაკე
- res_ hdev_ count_ რეგიონები
- hdev _ count_ რეგიონები. hdev
- წყარო
- hdev_count_regions.cpp
- hdev_count_regions.h
- CMakeLists.txt
ბიბლიოთეკის პროექტის ინტეგრირება Visual Studio-ში
და ბოლოს, ჩვენ უნდა გავაერთიანოთ HDevelop პროგრამა ჩვენს Visual Studio პროექტში.
- გახსენით Visual Studio Project.
- გახსენით პროექტი, დაამატეთ არსებული ნივთი… და აირჩიეთ C++ file hdev_count_regions.cpp და სათაური file hdev_count_regions.h, შექმნილი HDevelop's Library Export-ის მიერ. ( files მდებარეობს საქაღალდეში hdev_count_regions source.)
- შეიყვანეთ შემდეგი კოდი vs_count_regions.cpp-ში:
#შეიცავს
#include "HalconCpp.h"
#include "hdev_count_regions/source/hdev_count_regions.h"
int main()
{
HalconCpp::HImage გამოსახულება(“pcb”);
hdev_count_regions::SetResourcePath("hdev_count_regions/res_hdev_count_regions");
HalconCpp::HTuple Number{};
hdev_count_regions::count_regions(სურათი, &ნომერი);
std::cout << “რეგიონების რაოდენობა: ” << ნომერი.L() << '\n';
} - შეასრულეთ პროგრამა. → იხსნება კონსოლი, რომელიც აჩვენებს შედეგს 'რეგიონების რაოდენობა: 43'.
როგორ გავაგრძელოთ
HALCON-ში უფრო ღრმად ჩასართავად, ჩვენ გთავაზობთ შემდგომ დოკუმენტაციას და მხარდაჭერას.
- HDevelop მაგampპროგრამები
HALCON გთავაზობთ ექსampპროგრამები, არა მხოლოდ HDevelop-ისთვის, არამედ სხვადასხვა პროგრამირების ენებისთვის. ეს ყოფილიamples შეგიძლიათ იხილოთ დირექტორიაში, რომელიც აღინიშნება გარემოს ცვლადი % HALCONEXAMPLES% ან, თუ ცვლადი არ არის დაყენებული, ქვედირექტორიაში exampსაქაღალდის les, რომელშიც დააინსტალირეთ HALCON.
HDevelop-ის გასახსნელად ყოფილიample პროგრამა, აირჩიეთ მენიუ File დაათვალიერეთ HDevelop Exampპროგრამები…. დამწყებთათვის, ჩვენ გირჩევთ აირჩიოთ ყოფილიample კატეგორიიდან განაცხადის არეალი. - მომსახურება და დახმარება
ჩვენი webსაიტი https://www.mvtec.com/services-support გთავაზობთ სხვადასხვა სახის მხარდაჭერას, მაგampსამეურვეო ვიდეოები, ინფორმაცია სემინარებისა და ტრენინგების შესახებ, დეველოპერების კუთხე, რომელიც გთავაზობთ რჩევებსა და ხრიკებს და მრავალი სხვა. - HALCON დოკუმენტაცია
დოკუმენტაცია იძლევა უამრავ ინფორმაციას, დამწყები თემებიდან საექსპერტო ცოდნამდე. მაგampჩვენი გადაწყვეტილებების სახელმძღვანელო აღწერს მანქანათმხედველობის მეთოდებს და როგორ გამოვიყენოთ ისინი HDevelop-ში. კარგი საწყისი წერტილი არის Solution Guide I, რომელიც გაგაცნობთ მანქანათმხედველობის მთავარ მეთოდებს.
დასრულდაview ყველა სახელმძღვანელო მოკლე აღწერილობით შეგიძლიათ იხილოთ დოკუმენტაციის შესვლის გვერდზე.
დოკუმენტები / რესურსები
![]() |
HALCON 21.11 პროგრესი [pdf] მომხმარებლის სახელმძღვანელო 21.11 პროგრესი, 21.11, პროგრესი |





