โลโก้ halcon

HALCON 21.11 ความคืบหน้า

HALCON-21-11-ความคืบหน้า-ภาพผลิตภัณฑ์

เข้าถึงฟังก์ชันการทำงานของ HALCON เวอร์ชัน 21.11.0.0 ได้อย่างรวดเร็ว
สงวนลิขสิทธิ์. ห้ามทำซ้ำส่วนใดส่วนหนึ่งของสิ่งพิมพ์นี้ เก็บไว้ในระบบเรียกคืน หรือส่งต่อในรูปแบบใดๆ หรือด้วยวิธีการใดๆ ทั้งทางอิเล็กทรอนิกส์ กลไก การถ่ายเอกสาร การบันทึก หรืออื่นๆ โดยไม่ได้รับอนุญาตเป็นลายลักษณ์อักษรล่วงหน้าจากผู้จัดพิมพ์

ลิขสิทธิ์ © 2003-2021 โดย MVTec Software GmbH, München, Germany
ได้รับการคุ้มครองโดยสิทธิบัตรต่อไปนี้: US 7,239,929, US 7,751,625, US 7,953,290, US 7,953,291, US 8,260,059, US 8,379,014, US 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 อื่นๆ อีกหลายเล่ม เนื่องจากจะเชื่อมโยงระหว่างกันตามหัวข้อต่อไปนี้:

  1. การติดตั้ง HALCON (หน้า 7)
    บทนี้จะแนะนำ MVTec Software Manager (SOM)
  2. สถาปัตยกรรม HALCON (หน้า 9)
    พื้นฐานทางทฤษฎีบางอย่างจำเป็นต้องเข้าใจว่า HALCON คืออะไรและทำงานอย่างไร
  3. วิธีการพัฒนาแอพพลิเคชั่น (หน้า 15)
    บทนี้จะอธิบายสามแนวทางพื้นฐานในการพัฒนาด้วย HALCON และแนะนำคุณตลอดการเขียนโปรแกรมครั้งแรก เช่นampเล.
  4. วิธีดำเนินการต่อ (หน้า 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 เหล่านี้เป็นไลบรารีที่อนุญาตให้ใช้ตัวดำเนินการโดยตรงในรูปแบบการเขียนโปรแกรมทั่วไปของภาษาโปรแกรมต่างๆ

HALCON-21-11-ความคืบหน้า-01

รูปที่ 2.1: สถาปัตยกรรมพื้นฐานของ HALCON

สำหรับการเข้าถึงอุปกรณ์รับอิมเมจ HALCON มีอินเทอร์เฟซการรับอิมเมจ (หน้า 13) ซึ่งอนุญาตให้คุณใช้อุปกรณ์รับอิมเมจที่แตกต่างกันในลักษณะเดียวกัน ไลบรารีที่มีการใช้งานเฉพาะอุปกรณ์จะถูกโหลดแบบไดนามิกเมื่อจำเป็น ในทำนองเดียวกัน อุปกรณ์ I/O สามารถเข้าถึงได้ผ่านอินเทอร์เฟซ I/O เฉพาะอุปกรณ์ (หน้า 13)

ผู้ดำเนินการ

เมื่อใดก็ตามที่ใช้ฟังก์ชันประเภทใดๆ จากไลบรารี HALCON ฟังก์ชันนั้นจะกระทำผ่านโอเปอเรเตอร์ ส่วนใหญ่ประกอบด้วยหลายวิธีซึ่งเลือกผ่านพารามิเตอร์ รายการทั้งหมดของโอเปอเรเตอร์ทั้งหมดสามารถพบได้ใน HALCON Operator Reference ที่มีอยู่ในไวยากรณ์ HDevelop, .NET, Python, C++ และ C คุณสมบัติที่สำคัญของผู้ประกอบการคือ:

  • ไม่มีลำดับชั้นระหว่างตัวดำเนินการ จากจุดสถาปัตยกรรมซอฟต์แวร์ของ viewตัวดำเนินการทั้งหมดอยู่ในระดับเดียวกัน
  • แน่นอนว่ามีกลุ่มตัวดำเนินการเชิงตรรกะ สำหรับอดีตampอย่างไรก็ตาม สามารถดูได้จากคลาสที่นำเสนอสำหรับ C++ และ .NET ซึ่งตัวดำเนินการที่ประมวลผลข้อมูลชนิดเดียวกันเป็นฟังก์ชันสมาชิกของคลาสที่เกี่ยวข้อง
  • การออกแบบตัวดำเนินการตามกฎของสถาปัตยกรรมแบบเปิด ดังนั้น คุณสามารถสร้างตัวดำเนินการของคุณเองและขยาย HALCON (ดูหัวข้อ 2.2) คู่มือโปรแกรมเมอร์ของ Extension Package ประกอบด้วยข้อมูลโดยละเอียดเกี่ยวกับการขยายไลบรารีโอเปอเรเตอร์
  • ผู้ปฏิบัติงานจำนวนมากสามารถใช้การขนานอัตโนมัติได้อย่างโปร่งใส ซึ่งช่วยให้เพิ่มความเร็วของโปรแกรมได้อย่างง่ายดายเมื่อใช้ภาพขนาดใหญ่บนคอมพิวเตอร์แบบมัลติโปรเซสเซอร์หรือมัลติคอร์ สามารถดูข้อมูลโดยละเอียดเกี่ยวกับการเขียนโปรแกรมแบบขนานได้ในหมายเหตุทางเทคนิค การเขียนโปรแกรมแบบขนาน รวมถึงในคู่มือโปรแกรมเมอร์
  • ตัวดำเนินการมีกฎมาตรฐานสำหรับการสั่งพารามิเตอร์อินพุตและเอาต์พุต: อินพุตไอคอน ไอคอนเอาต์พุต การควบคุมอินพุต และการควบคุมเอาต์พุต (ดูหัวข้อ 2.1.1) อาจไม่ต้องการกลุ่มทั้งหมดสำหรับโอเปอเรเตอร์ที่กำหนด โดยทั่วไป พารามิเตอร์อินพุตของตัวดำเนินการจะไม่ถูกแก้ไข ซึ่งส่งผลให้เกิดความหมายที่ชัดเจนและเรียบง่าย มีข้อยกเว้นเพียงเล็กน้อยสำหรับการออกแบบนี้ เช่น set_grayval, overpaint_gray และ overpaint_region

พารามิเตอร์และโครงสร้างข้อมูล
HALCON มีพารามิเตอร์พื้นฐานสองประเภท: ข้อมูลสัญลักษณ์และข้อมูลควบคุม รูปภาพ ภูมิภาค และ XLD (คำอธิบายบรรทัดขยาย) เป็นของข้อมูลสัญลักษณ์

รูปภาพ ประกอบด้วยช่องสัญญาณเป็นส่วนใหญ่ เช่น เมทริกซ์ที่มีค่าพิกเซล ทุกช่องของภาพมีขนาดเท่ากัน สำหรับข้อมูลโดยละเอียดเกี่ยวกับพิกเซลและช่อง โปรดอ่านบท "รูปภาพ" ของข้อมูลอ้างอิงสำหรับผู้ให้บริการ HALCON
สำหรับแต่ละภาพ พื้นที่ที่เรียกว่าภูมิภาคที่น่าสนใจ (ROI) จะระบุว่าส่วนใดของภาพที่ได้รับการประมวลผล สามารถกำหนด ROI ได้อย่างยืดหยุ่นมาก (ตั้งแต่สี่เหลี่ยมผืนผ้าธรรมดาไปจนถึงชุดของพิกเซลที่ไม่ได้เชื่อมต่อกัน) สำหรับรายละเอียดเกี่ยวกับการจัดการ ROI โปรดดูคู่มือโซลูชัน I ภูมิภาคที่สนใจ ในหน้า 27

ภูมิภาค เป็นชุดของพิกเซล พิกเซลของพื้นที่ไม่จำเป็นต้องเชื่อมต่อ แม้กระทั่งการรวบรวมพิกเซลโดยพลการก็สามารถจัดการเป็นพื้นที่เดียวได้ ด้วยการเชื่อมต่อโอเปอเรเตอร์ ภูมิภาคสามารถแบ่งออกเป็นภูมิภาคที่เชื่อมต่อได้ เช่น ส่วนประกอบที่ประกอบด้วยพิกเซลที่เชื่อมต่อ

XLD ประกอบด้วยข้อมูลตามรูปร่างและรูปหลายเหลี่ยมทั้งหมด ตัวดำเนินการที่มีความแม่นยำของพิกเซลย่อย เช่น edge_sub_pix จะส่งคืนรูปทรงเป็นข้อมูล XLD รูปร่างคือลำดับของจุดควบคุม 2 มิติ ซึ่งเชื่อมต่อกันด้วยเส้น โดยทั่วไปแล้ว ระยะห่างระหว่างจุดควบคุมจะอยู่ที่ประมาณหนึ่งพิกเซล อ็อบเจ็กต์ XLD ประกอบด้วยแอตทริบิวต์แบบโลคัลและโกลบอล นอกเหนือจากจุดควบคุมแล้ว ทั่วไป เช่นampไฟล์สำหรับสิ่งเหล่านี้คือ เช่น ขอบ ampความจำกัดของจุดควบคุมหรือพารามิเตอร์การถดถอยของส่วนรูปร่าง นอกจากการแยกวัตถุ XLD แล้ว HALCON ยังรองรับการประมวลผลเพิ่มเติม อดีตampสำหรับสิ่งนี้คือการเลือกรูปทรงตามช่วงคุณลักษณะที่กำหนดสำหรับการแบ่งส่วนรูปร่างออกเป็นเส้น ส่วนโค้ง รูปหลายเหลี่ยม หรือเส้นขนาน

ข้อมูลควบคุมประกอบด้วยตัวจับและชนิดข้อมูลพื้นฐาน เช่น จำนวนเต็ม จำนวนจริง สตริง

ที่จับ เป็นการอ้างอิงถึงโครงสร้างข้อมูลที่ซับซ้อน เช่น การเชื่อมต่อกับอินเทอร์เฟซการรับรูปภาพหรือแบบจำลองสำหรับการจับคู่ตามรูปร่าง เพื่อเหตุผลด้านประสิทธิภาพและความปลอดภัยของข้อมูล ไม่ใช่โครงสร้างทั้งหมด แต่มีเพียงหมายเลขอ้างอิงเท่านั้นที่ส่งผ่านระหว่างตัวดำเนินการ แฮนเดิลคือค่าเวทย์มนตร์ที่ต้องไม่เปลี่ยนแปลงและอาจแตกต่างกันระหว่างการดำเนินการกับการดำเนินการและรุ่นต่อรุ่น ข้อมูลเหล่านี้จะถูกล้างโดยอัตโนมัติเมื่อการอ้างอิงทั้งหมดถูกเขียนทับ อดีตampไฟล์ที่ใช้ตัวจับคือหน้าต่างกราฟิก files, ซ็อกเก็ต, อินเทอร์เฟซการรับภาพ, OCR, OCV, การวัดและการจับคู่

แพ็คเกจส่วนขยาย

HALCON อาจขยายโดยผู้ให้บริการรายใหม่ แม้ว่า HALCON จะมีตัวดำเนินการจำนวนมากอยู่แล้วสำหรับงานต่างๆ คุณอาจต้องการใช้ตัวดำเนินการใหม่ เช่น เพื่อเข้าถึงฮาร์ดแวร์พิเศษหรือใช้อัลกอริทึมทางเลือก ในการดำเนินการดังกล่าว HALCON ได้จัดเตรียมส่วนต่อประสานแพ็คเกจเสริม ซึ่งช่วยให้สามารถรวมโอเปอเรเตอร์ใหม่ (ดำเนินการใน C) ในรูปแบบของแพ็คเกจส่วนขยายที่เรียกว่า Extension Package Interface ประกอบด้วยรูทีนและมาโครที่กำหนดไว้ล่วงหน้าหลายรายการสำหรับการจัดการข้อมูลรูปภาพและอ็อบเจกต์หน่วยความจำใน C อย่างง่ายดาย เมื่อรวมโอเปอเรเตอร์ใหม่สำเร็จแล้ว จะสามารถใช้งานได้เหมือนกับโอเปอเรเตอร์ HALCON อื่นๆ คู่มือโปรแกรมเมอร์ของ Extension Package ประกอบด้วยข้อมูลโดยละเอียดเกี่ยวกับการขยายไลบรารีโอเปอเรเตอร์

อินเทอร์เฟซภาษา

ดังที่แสดงในรูปที่ 2.1 ในหน้า 9 HALCON มีอินเทอร์เฟซภาษาที่เรียกว่า สิ่งเหล่านี้คือการเชื่อมโยงภาษาพื้นเมือง ซึ่งช่วยให้คุณสามารถเรียกโอเปอเรเตอร์และใช้ชนิดข้อมูล HALCON ได้โดยตรงจากภายในแอปพลิเคชันของคุณ ไม่ว่าจะเป็น Python, C, C++ หรือ .NET
ในการเริ่มต้นการพัฒนา เราขอแนะนำให้ตรวจสอบหนึ่งในรายการที่พร้อมใช้งานก่อน เช่นampโปรแกรมเลอ ที่นี่ คุณสามารถดูวิธีการตั้งค่าโครงการและวิธีการใช้ตัวดำเนินการและประเภทต่างๆ
สำหรับอินเทอร์เฟซแต่ละภาษา ชื่อของประเภท คลาส หลักการตั้งชื่อของตัวดำเนินการ ฯลฯ อาจแตกต่างกันเพื่อให้สอดคล้องกับกฎทั่วไปที่ใช้สำหรับภาษาที่เลือก ลายเซ็นตัวดำเนินการสำหรับภาษาโปรแกรมที่รองรับได้รับการบันทึกไว้ในเอกสารอ้างอิงตัวดำเนินการ HALCON

ฮัลคอน/งูหลาม
อินเทอร์เฟซ Python โดดเด่นด้วยความเรียบง่ายและความสามารถในการสร้างต้นแบบอย่างรวดเร็ว ตัวดำเนินการ HALCON ถูกเรียกใช้โดยตรงเป็นฟังก์ชันแบบสแตนด์อโลน หลังจากอิมพอร์ตโมดูล HALCON/Python โปรดทราบว่าพารามิเตอร์ตัวดำเนินการใน HALCON/Python จะแบ่งออกเป็นพารามิเตอร์ฟังก์ชัน (อินพุต) และค่าส่งคืน (เอาต์พุต)

Example
รหัสต่อไปนี้อ่านภาพและคำนวณจำนวนภูมิภาคที่เชื่อมต่อ (หน้า 10) ในนั้น
img = ha.read_image('pcb')
ภูมิภาค = ha.threshold (img, 0, 122)
num_regions = ha.count_obj (ha.connection (ภูมิภาค))
พิมพ์(f'จำนวนภูมิภาค: {num_regions}')

สำหรับข้อกำหนดเบื้องต้นและคำแนะนำแบบละเอียด โปรดดูคู่มือโปรแกรมเมอร์ ตอนที่ 4 เรื่องแรกในอดีตampเล.

ฮัลคอน/ซี
อินเทอร์เฟซ C เป็นอินเทอร์เฟซที่ง่ายที่สุดที่ HALCON รองรับ ตัวดำเนินการแต่ละตัวจะแสดงด้วยฟังก์ชันส่วนกลางหนึ่งหรือสองฟังก์ชันโดยที่ชื่อตัวดำเนินการและลำดับพารามิเตอร์เหมือนกันกับภาษา HDevelop

Example
รหัสต่อไปนี้อ่านภาพและคำนวณจำนวนภูมิภาคที่เชื่อมต่อ (หน้า 10) ในนั้น
โฮปเจกต์ img;
read_image(&img, “pcb”);
ภูมิภาค Hoject;
เกณฑ์ (img, ®ion, 0, 122);
Hobject เชื่อมต่อ_regions;
การเชื่อมต่อ (ภูมิภาค &connected_regions);
ยาว num_regions = 0;
count_obj(connected_regions, &num_regions);
printf(“จำนวนภูมิภาค: %” PRIdPTR “\n”, num_regions);

สำหรับข้อกำหนดเบื้องต้นและคำแนะนำแบบละเอียด โปรดดูคู่มือโปรแกรมเมอร์ ตอนที่ 5 เรื่องแรกในอดีตampเล.

ฮัลคอน/C++
อินเทอร์เฟซ C ++ นั้นซับซ้อนกว่าอินเทอร์เฟซ C มาก ที่นี่ advantages ของ C++ และการเขียนโปรแกรมเชิงวัตถุถูกนำมาใช้ เช่น การแปลงชนิดอัตโนมัติ การสร้างและการทำลาย หรือการจัดกลุ่มฟังก์ชันร่วมกับข้อมูลเป็นคลาส เช่นเดียวกับในอินเทอร์เฟซ C ฟังก์ชันส่วนกลางสำหรับแต่ละโอเปอเรเตอร์ HALCON มีไว้สำหรับรูปแบบขั้นตอนของการเขียนโปรแกรม

Example
รหัสต่อไปนี้อ่านภาพและคำนวณจำนวนภูมิภาคที่เชื่อมต่อ (หน้า 10) ในนั้น
HImage img{“pcb”};
ภูมิภาค HRegion = img.Threshold(0, 122);
Hlong numRegions = ภูมิภาค.การเชื่อมต่อ().CountObj();
std::cout << “จำนวนภูมิภาค: ” << numRegions << '\n';

สำหรับข้อกำหนดเบื้องต้นและคำแนะนำแบบละเอียด โปรดดูคู่มือโปรแกรมเมอร์ ตอนที่ 2 เรื่องแรกในอดีตampเล.

ฮัลคอน/.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 = ภูมิภาคการเชื่อมต่อ () .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 ที่สอดคล้องกันจะถูกปรับ โปรดอ้างอิงถึง Image Acquisition Interface Reference สำหรับรายการทั้งหมดของอินเทอร์เฟซการรับภาพที่รองรับ
เมื่อคุณติดตั้งอุปกรณ์รับภาพสำเร็จแล้ว สิ่งที่คุณต้องทำเพื่อเข้าถึงจาก HALCON ก็คือโทรหาโอเปอเรเตอร์ open_framegrabber โดยระบุชื่ออินเทอร์เฟซการรับภาพและข้อมูลเพิ่มเติมบางอย่าง เช่น เกี่ยวกับกล้องที่เชื่อมต่อ จากนั้น สามารถเรียกรูปภาพได้โดยเรียกโอเปอเรเตอร์ grab_image (หรือ grab_image_async)

I / O การเชื่อมต่อ

HALCON มีอินเทอร์เฟซสำหรับอุปกรณ์ I/O หลายตัวเพื่อเปิดใช้งานการรับข้อมูล อินเทอร์เฟซเหล่านี้พร้อมใช้งานเป็นไลบรารีที่โหลดได้แบบไดนามิก (Windows: DLLs; ระบบที่คล้าย Unix: ไลบรารีที่ใช้ร่วมกัน) ชื่อห้องสมุดขึ้นต้นด้วยคำนำหน้า hio; ไลบรารีที่ลงท้ายด้วยคำต่อท้าย xl ถูกใช้โดย HALCON XL
อินเทอร์เฟซอุปกรณ์ I/O ของ HALCON ให้การเข้าถึงอุปกรณ์ 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 ตามข้อกำหนดที่กำหนดแล้ว จะต้องแปลเป็นสภาพแวดล้อมขั้นสุดท้าย สำหรับสิ่งนี้ คุณสามารถเลือกระหว่างสามวิธีต่อไปนี้ ขึ้นอยู่กับความชอบของคุณ:

  • เริ่มจาก Scratch: การเขียนโปรแกรมของคุณตั้งแต่ต้นหมายถึงการแปลรหัส HDevelop ของคุณเป็นภาษาโปรแกรมเป้าหมาย (C++, Python…) ด้วยตนเอง ดังที่ได้กล่าวไว้ก่อนหน้านี้ รูปแบบการตั้งชื่อของตัวดำเนินการ ชื่อของคลาส ฯลฯ อาจแตกต่างกันระหว่างภาษาโปรแกรม ดูที่การอ้างอิงตัวดำเนินการ HALCON เพื่อรับลายเซ็นตัวดำเนินการ HALCON สำหรับแต่ละภาษาโปรแกรมที่รองรับ สำหรับข้อมูลเกี่ยวกับวิธีสร้างแอปพลิเคชันในภาษาเป้าหมายที่คุณต้องการ โปรดอ่านคู่มือโปรแกรมเมอร์
  • ส่งออกรหัส HDevelop: แปลโค้ด HDevelop ของคุณเป็นภาษาโปรแกรมเป้าหมายโดยอัตโนมัติโดยใช้การส่งออกโค้ดของ HDevelop
  • โครงการห้องสมุดส่งออก: การส่งออกไลบรารีของ HDevelop สร้างโฟลเดอร์โปรเจ็กต์ที่พร้อมใช้งาน ซึ่งรวมถึงรหัสตัดคำในภาษาเป้าหมายและ CMake file เพื่อสร้างโครงการ การส่งออกไลบรารีของ HDevelop ใช้ HDevEngine ซึ่งเป็นไลบรารีที่ทำหน้าที่เป็นล่าม HDevEngine ช่วยให้คุณสามารถเรียกใช้โปรแกรมหรือขั้นตอนของ HDevelop ได้โดยตรงจากแอปพลิเคชันที่เขียนด้วย C++ หรือภาษาใดๆ ก็ตามที่สามารถผสานรวมวัตถุ .NET ได้ ดังนั้น คุณไม่จำเป็นต้องคอมไพล์แอปพลิเคชันทั้งหมดอีกครั้งเมื่อทำการเปลี่ยนแปลงโค้ด HDevelop
    แน่นอน คุณสามารถใช้ HDevEngine ได้โดยไม่ต้องใช้ฟังก์ชันส่งออกไลบรารีของ HDevelop วิธีการใช้ HDevEngine มีรายละเอียดอธิบายไว้ในคู่มือโปรแกรมเมอร์ ตอนที่ 6 (การใช้ HDevEngine)
HDพัฒนา

มาดู HDevelop กันก่อน รูปที่ 3.1 แสดงอินเทอร์เฟซผู้ใช้ของ HDevelop หลังจากโหลดโปรแกรมและดำเนินการบางส่วนแล้ว
ตามค่าเริ่มต้น หน้าต่างเหล่านี้จะมองเห็นได้ ซึ่งจำเป็นสำหรับการพัฒนาด้วย HDevelop ด้วย:

  1. หน้าต่างกราฟิกแสดงผล (ระดับกลาง) ได้แก่ ข้อมูลที่เป็นไอคอน (หน้า 10) เช่น รูปภาพ ขอบเขต และ XLD
  2. หน้าต่างโปรแกรม นี่คือที่ที่คุณพิมพ์รหัสโปรแกรมของคุณ โดยใช้โอเปอเรเตอร์ (หน้า 10) เพื่อเข้าถึงวิธีการประมวลผลภาพของ HALCON
  3. หน้าต่างตัวแปร แสดงตัวแปรทั้งหมด ได้แก่ ตัวแปรสัญลักษณ์และตัวแปรควบคุม ตัวแปรที่เป็นสัญลักษณ์มีข้อมูลที่เป็นสัญลักษณ์ (หน้า 10) และตัวแปรควบคุมมีข้อมูลควบคุม (หน้า 10)

ดูข้อมูลโดยละเอียดเกี่ยวกับ HDevelop ได้ในคู่มือผู้ใช้ HDevelop วิดีโอการสอนของเรายังมีคำแนะนำที่ดีเกี่ยวกับ HDevelop:

  • HDevelop บทช่วยสอน 01: GUI และการนำทาง
  • HDevelop บทช่วยสอน 02: ตัวแปร
  • HDevelop บทช่วยสอน 03: การสร้างภาพ

HALCON-21-11-ความคืบหน้า-02

รูปที่ 3.1: ส่วนติดต่อผู้ใช้ของ HDevelop

Exampเลอ โปรแกรม

ตอนนี้คุณได้รับการแนะนำให้รู้จักอินเทอร์เฟซผู้ใช้ของ HDevelop และแนวคิดพื้นฐานของ HALCON แล้ว (หน้า 9) เรามาพัฒนาแอปพลิเคชัน C++ โดยใช้วิธีการส่งออกไลบรารี
นอกจากคำแนะนำทีละขั้นตอนต่อไปนี้ เราขอแนะนำให้คุณดูวิดีโอแนะนำของเรา: รวมโค้ด HDevelop เข้ากับแอปพลิเคชัน C++ โดยใช้ Library Project Export
รวมโค้ด HDevelop เข้ากับแอปพลิเคชัน C# โดยใช้ Library Project Export
วิดีโอสาธิตการส่งออกห้องสมุดและให้ข้อมูลพื้นฐานเพิ่มเติมเกี่ยวกับหัวข้อ

สร้างต้นแบบใน HDevelop
งานของอดีตต่อไปนี้ample คือการอ่านรูปภาพและนับจำนวนภูมิภาคที่เชื่อมต่อกัน

  1. เปิด HDevelop และป้อนรหัสต่อไปนี้ในหน้าต่างโปรแกรม:
    read_image (รูปภาพ, 'pcb')
    เกณฑ์ (รูปภาพ, ภูมิภาค, 0, 122)
    การเชื่อมต่อ (ภูมิภาค ConnectedRegions)
    count_obj (ภูมิภาคที่เชื่อมต่อ จำนวน)
  2. ทดสอบโปรแกรมของคุณโดยคลิก Run ในแถบเครื่องมือหรือกด F5

ในการรวมรหัส HDevelop นี้เข้ากับแอปพลิเคชันจริงอย่างง่ายดาย เราได้สรุปส่วนวิชันซิสเต็มไว้ในขั้นตอนเฉพาะที่

  1. เน้นบรรทัดรหัสต่อไปนี้: เกณฑ์ (รูปภาพ, ภูมิภาค, 0, 122) การเชื่อมต่อ (ภูมิภาค, ConnectedRegions) count_obj (ConnectedRegions, Number)
  2. คลิกขวาเพื่อเปิดเมนูบริบท
  3. เลือกสร้างขั้นตอนใหม่
  4. ตั้งชื่อว่า count_regions
  5. เลือกพารามิเตอร์และเปลี่ยน Selection Scheme เป็น First In, Last Out
  6. ยืนยันด้วยการตกลง
  7. บันทึกโปรแกรม HDevelop ของคุณเป็น hdev_count_regions.hdev

เตรียมโครงการ Visual Studio
ในอดีตที่ผ่านมาampต่อไปนี้ เราจะใช้ Visual Studio 2019 1

  1. สร้างโปรเจ็กต์ C++ Windows Console ที่ว่างเปล่า และตั้งชื่อว่า vs_count_regions โปรดเปิดใช้งานตัวเลือก วางโซลูชันและโครงการในไดเร็กทอรีเดียวกัน 2
  2. เพิ่มซอร์ส C++ file (โครงการเมนู เพิ่มรายการใหม่… C++ File) และตั้งชื่อว่า vs_count_regions.cpp
  3. เลือกโซลูชันแพลตฟอร์ม x64 จากเมนูแบบเลื่อนลงในแถบเครื่องมือ
  4. เปิดคุณสมบัติโครงการของคุณ (เมนูโครงการ vs_count_regions คุณสมบัติ…) และทำการตั้งค่าต่อไปนี้:
    • เลือก C/C++ General และเพิ่มไดเรกทอรีรวมเพิ่มเติมต่อไปนี้:$(HALCONROOT)\include;$(HALCONROOT)\include\halconcpp;
    • เลือก Linker General และเพิ่มไดเรกทอรีไลบรารีเพิ่มเติมต่อไปนี้:$(HALCONROOT)\lib\$(HALCONARCH);
    • เลือก Linker Input และเพิ่มการพึ่งพาเพิ่มเติมต่อไปนี้: halconcpp.lib;hdenginecpp.lib;

โครงการห้องสมุดส่งออก
ต่อไป เราส่งออกโปรแกรม HDevelop hdev_count_regions.hdev ไปยังโฟลเดอร์โครงการ Visual Studio ของเรา

  1. เปิดโปรแกรม HDevelop ที่สร้างไว้ก่อนหน้านี้ hdev_count_regions.hdev
  2. เปิด File  ส่งออกโครงการห้องสมุด…
  3. ทำการตั้งค่าต่อไปนี้:
    • ป้อนข้อมูล file: โปรแกรมปัจจุบัน
    • ภาษาเป้าหมาย: C++
    • ชื่อโครงการ: hdev_count_regions
    • ที่ตั้งโครงการ: เลือกที่ตั้งของโครงการ Visual Studio ของเรา vs_count_regions
    • เนมสเปซ: hdev_count_regions
  4. ยืนยันด้วยการส่งออก

ตอนนี้ โฟลเดอร์โปรเจ็กต์ 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 Project ของเรา

  1. เปิดโครงการ Visual Studio
  2. เปิด Project Add Existing Item… แล้วเลือก C++ file hdev_count_regions.cpp และส่วนหัว file hdev_count_regions.h สร้างขึ้นโดยการส่งออกไลบรารีของ HDevelop (เดอะ files อยู่ในโฟลเดอร์แหล่ง hdev_count_regions)
  3. ป้อนรหัสต่อไปนี้ใน vs_count_regions.cpp:
    #รวม
    #รวม “HalconCpp.h”
    #รวม “hdev_count_regions/source/hdev_count_regions.h”
    int หลัก()
    {
    HalconCpp::ภาพ HImage("pcb");
    hdev_count_regions::SetResourcePath (“hdev_count_regions/res_hdev_count_regions”);
    HalconCpp::HTuple จำนวน{};
    hdev_count_regions::count_regions(รูปภาพ, &จำนวน);
    std::cout << “จำนวนภูมิภาค: ” << Number.L() << '\n';
    }
  4. ดำเนินการโปรแกรม → คอนโซลเปิดขึ้น แสดงผล 'จำนวนภูมิภาค: 43'

วิธีดำเนินการต่อ

หากต้องการเจาะลึกลงไปใน HALCON เรามีเอกสารและการสนับสนุนเพิ่มเติม

  • HDevelop อดีตampไฟล์โปรแกรม
    HALCON จัดเตรียมชุดตัวอย่างมากมายampโปรแกรม le ไม่เพียงแต่สำหรับ HDevelop เท่านั้น แต่ยังรวมถึงภาษาโปรแกรมต่างๆ ด้วย อดีตเหล่านี้ampไฟล์สามารถพบได้ในไดเร็กทอรีที่แสดงโดยตัวแปรสภาพแวดล้อม % HALCONEXAMPLES% หรือหากไม่ได้ตั้งค่าตัวแปรไว้ในไดเร็กทอรีย่อย เช่นampไฟล์ของโฟลเดอร์ที่คุณติดตั้ง HALCON ไว้
    หากต้องการเปิด HDevelop เช่นampโปรแกรม le เลือกเมนู File  เรียกดู HDevelop อดีตampโปรแกรมเลอ…. สำหรับผู้เริ่มต้น เราขอแนะนำให้เลือกอดีตample จากหมวดหมู่ Application area.
  • บริการและการสนับสนุน
    ของเรา webเว็บไซต์ https://www.mvtec.com/services-support ให้การสนับสนุนที่หลากหลาย เช่นampวิดีโอสอนการใช้งาน ข้อมูลเกี่ยวกับเวิร์กชอปและการฝึกอบรม มุมนักพัฒนาที่ให้คำแนะนำและกลเม็ด และอื่นๆ อีกมากมาย
  • เอกสาร HALCON
    เอกสารประกอบให้ข้อมูลมากมายตั้งแต่หัวข้อเริ่มต้นไปจนถึงความรู้จากผู้เชี่ยวชาญ สำหรับอดีตample, Solution Guides ของเราจะอธิบายวิธีการวิชันซิสเต็มและวิธีการนำไปใช้ใน HDevelop จุดเริ่มต้นที่ดีคือ Solution Guide I ซึ่งจะแนะนำคุณเกี่ยวกับวิธีการวิชันซิสเต็มหลัก
    โอเวอร์view คู่มือทั้งหมดพร้อมคำอธิบายสั้น ๆ สามารถพบได้ในหน้ารายการเอกสารประกอบ

เอกสาร / แหล่งข้อมูล

HALCON 21.11 ความคืบหน้า [พีดีเอฟ] คู่มือการใช้งาน
21.11 ความคืบหน้า 21.11 ความคืบหน้า

อ้างอิง

ฝากความคิดเห็น

ที่อยู่อีเมลของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องกรอกข้อมูลมีเครื่องหมาย *