主頁 >  其他 > Halcon快速入門

Halcon快速入門

2022-12-07 08:14:58 其他

  • 前言
  • 一,HALCON 概述
  • 1.1,HALCON 安裝
  • 二,HALCON 架構
    • 2.1,算子
      • 2.1.1,引數和資料結構
    • 2.2,拓展包
    • 2.3,介面
      • 2.3.1,HALCON-Python 介面
      • 2.3.2,HALCON-C 介面
      • 2.3.3,HALCON-C++ 介面
      • 2.3.4,HALCON-.NET 介面
    • 2.4,影像獲取介面
    • 2.5,I/O 介面
  • 三,如何開發應用
    • 3.1,HDevelop
    • 3.2,示例程式
  • 四,更多參考資料

前言

工業智慧視覺應用主要涉及四個場景:識別、測量、定位、檢測,

  • 識別:識別物體的物理特征,包括形狀、顏色、字符和條碼等,常見的應用場景是 OCR,讀取零部件上的字母、數字、字符等用于溯源,
  • 測量:把獲取到的影像像素資訊標定成常用的度量衡單位,再通過精確計算出目標的幾何尺寸,
  • 定位:獲取目標的二維/三維位置資訊,常用語元件定位,用以輔助機器臂進行后續的抓取等動作,
  • 檢測:一般特指缺陷檢測,判斷產品是否存在缺陷,如零部件缺陷檢測等,

image

一,HALCON 概述

HALCON 是德國 MVtec 公司開發的一款綜合性的機器視覺標準軟體,擁有全球通用的集成開發環境(HDevelop),它節約了產品成本,縮短了軟體開發周期——HALCON 靈活的架構便于機器視覺,醫學影像和影像分析應用的快速開發,在歐洲以及日本的工業界已經是公認具有最佳效能的機器視覺(Machine Vision)軟體,

MVTec 提供了 5 種軟體:HALCON、MERLIC、深度學習工具、介面、嵌入式視覺,其中 HALCON 是最核心和應用最廣的,

HALCON 主要提供的技術有:條形碼和二維碼讀取、BLOB 分析、物影像分類、計算光學成像、過濾技術、缺陷檢查、匹配、1D/2D/3D 測量、形態學處理、OCR 和 OCV、基于樣本的識別(SBI)、亞像素邊緣檢測和線條提取技術、深度學習和 3D 視覺技術,

所謂 Blob 分析,即是從連通像素中提取具有相同邏輯狀態的特征 (Blob),

更多技術的描述請參閱官網資料,

image

1.1,HALCON 安裝

注意:HALCON 目前不支持 arm 處理器版的 M1 Pro 機器,而且目前主流是在 Windows 開發居多,

注意,需要先在官網注冊賬號,然后才能下載對應軟體,MVTec HALCON 提供兩個不同的軟體版本:HALCON 訂閱版 (HALCON Progress) 和 HALCON 永久版 (HALCON Steady),兩個版本是完全獨立的, 需要許可證,這意味著沒有可能從一個版本 "切換" 到另一個版本,

HALCON 下載安裝步驟如下所示:

  1. 進入 HALCON 官網,選擇產品版本、作業系統以及架構后就會下載對應版本軟體直接點擊下載好的安裝包即可安裝,
  2. 安裝的詳細步驟截圖如下所示,試用版不用安裝 license 檔案,跳過即可,

image

image

image

image

二,HALCON 架構

HALCON 架構如下圖 2.1 所示,HALCON 機器視覺軟體的主要部分就是影像處理庫,其由超過 2000 多個算子組成,當然我們也可以通過拓展包的形式開發自定義算子,并在程式中使用,

image

HALCON 提供了通用的影像采集介面來支持不同的影像采集設備(3D相機、相機等),包好特定設備的實作庫會在程式運行時動態加載,

2.1,算子

Operators,

我們使用 HALCON 庫中任何功能實際上都是通過算子(Operators)完成的,每個功能都有多種實作方法,其可以通過算子引數選擇,完整的算子串列在 HALCON Operator Reference,其提供了 HDevelop, .NET, Python, C++, 和 C syntax 介面,HALCON庫提供的算子的重要特征如下:

  • 算子之間沒有層次結構,所有算子都是一個級別的,
  • 存在邏輯算子,
  • 很多算子可以使用并行加速技術,
  • 算子的輸入輸出引數的排序是有標準化規則: 輸入圖示(iconic)、輸出圖示、輸入控制和輸出控制,

2.1.1,引數和資料結構

Quick Guide to HALCON Parameters and Data Structures

HALCON 算子的引數有兩種基本型別:圖示資料和控制資料(iconic data and control data),影像、區域(regions)和 XLD(拓展線描述) 屬于標志性資料,

  • Images(影像)即包含像素值的矩陣,由多個通道組成,其詳細定義可以參考《數字影像處理》書籍,這里感興趣區域 ROI 指的是輸入影像的哪一部磁區域會被處理,ROI 可以靈活定義,從簡單的矩形到一組未連接到像素點都支持,
  • Regions 由一系列像素組成,區域之中的像素可以不互相連接,任意像素集合都可以作為單個區域處理,
  • XLDS 包括所有基于輪廓和多邊形的資料,像 edges_sub_pix 這樣的亞像素精度算子將輪廓作為 XLD 資料回傳, 輪廓是一系列 2D 控制點,由線連接, 通常,控制點之間的距離約為 1 個像素, 除了控制點之外,XLD 物件還包含所謂的區域和全域屬性, 這些的典型示例是,例如,控制點的邊緣幅度或輪廓段的回歸引數, 除了提取 XLD 物件外,HALCON 還支持進一步處理, 這方面的示例是基于給定特征范圍的輪廓選擇,用于將輪廓分割成線、弧、多邊形或平行線,

控制資料(control data)包括句柄和基本資料型別,如整數、實數、字串,

句柄是對復雜資料結構的參考,例如,與影像采集介面或基于形狀匹配的模型的連接, 出于效率和資料安全的原因,在運算子之間傳遞的不是整個結構而是只有句柄, 句柄是不能更改的神奇值(magic values),并且可能因執行和版本而異, 一旦所有參考被覆寫,它們就會自動清除, 使用句柄的示例有圖形視窗、檔案、套接字、影像采集介面、OCR、OCV、測量和匹配

2.2,拓展包

為了支持特殊硬體或實作新的演算法,HALCON 支持以 C 語言實作的自定義算子,拓展包介面包含幾個預定義的例程和宏,用于在 C 中輕松處理影像資料和記憶體物件,成功集成新算子后,它可以像任何其他 HALCON 算子一樣使用,

2.3,介面

HALCON 支持Python、C、C++ 和 .NET 語言介面,對于·不同編程語言介面,其資料型別、類和算子的命名會有所不同,

2.3.1,HALCON-Python 介面

讀取影像并計算連接區域(connected regions)數量的示例代碼如下,

img = ha.read_image('pcb')
region = ha.threshold(img, 0, 122)
num_regions = ha.count_obj(ha.connection(region)) print(f'Number of Regions: {num_regions}')

2.3.2,HALCON-C 介面

C 介面是 HALCON 支持的最簡單的介面,每個算子由 1 或 2 個全域函式表示,其中算子的名稱和引數序列和 HDevelop 語言相同,

因為 HALCON 算子的本身就是由 C 語言實作的,所以 C 是原生介面,支持也是最好,

以下示例代碼也是實作讀取影像并計算連接區域(connected regions)數量,

Hobject img;
read_image(&img, "pcb");
Hobject region;
threshold(img, &region, 0, 122);
Hobject connected_regions;
connection(region, &connected_regions);
Hlong num_regions = 0;
count_obj(connected_regions, &num_regions);
printf("Number of Regions: %" PRIdPTR "\n", num_regions);

2.3.3,HALCON-C++ 介面

C++ 介面比 C 介面復雜得多,應用了 C++ 面向物件編程的優點,包括自動型別轉換、構造和解構式等,另外和 C 介面一樣,也為每個 HALCON 算子提供了全域函式,來實作程式化的編程風格(a procedural style of programming),

讀取影像并計算連接區域(connected regions)數量的 C++ 介面實作代碼如下,

HImage img{"pcb"};
HRegion region = img.Threshold(0, 122);
Hlong numRegions = region.Connection().CountObj();
std::cout << "Number of Regions: " << numRegions << '\n';

2.3.4,HALCON-.NET 介面

2.4,影像獲取介面

HALCON 通過動態庫(Windows: 動態加載庫 DLLs, Linux: 共享庫 shared libraries)的形式為 50 多個影像采集卡和數百個工業相機提供采集影像的介面,庫名稱以前綴 hAcq 開頭;HALCON XL 使用以 xl 結尾的庫,

HALCON 影像采集介面的更新會比 HALCON 庫本身更新更為頻繁,

成功安裝好影像采集設備后,通過 open_framegrabber 算子(需配置設備的名稱和其他資訊)訪問設備,通過 grab_image 算子獲取影像,

2.5,I/O 介面

HALCON 對不同 I/O 設備使用同一類算子實作統一訪問,安裝好 I/O 設備后,使用 open_io_device 算子建立連接,指定 I/O 設備介面的名稱;建立連接后,通過呼叫 open_io_channel 來打開傳輸通道,然后使用 read_io_channelwrite_io_channel 算子讀取和寫入值,

三,如何開發應用

官方推薦使用 HDevelop(HALCON 機器視覺庫的互動式開發環境) 進行快速原型設計,在開發好 HDevelop 程式后需要將其轉換為最侄訓境,方法有以下三種:

  • Start from Scratch: 從頭(scratch)開始撰寫程式意味著手動將 HDevelop 代碼翻譯成目標編程語言(C++、Python...),
  • 匯出 HDevelop 代碼: 使用 HDevelop 的代碼匯出功能將您的 HDevelop 代碼自動翻譯成目標編程語言,
  • 匯出庫專案::HDevelop 的庫匯出會生成一個即用型專案檔案夾,包括目標語言的包裝代碼和用于構建專案的 CMake 檔案, HDevelop 的庫匯出使用 HDevEngine,一個充當解釋器的庫,

3.1,HDevelop

默認情況下,HDevelop 視窗入下圖 3.1 所示,視窗主要分為 3 類

  1. **圖形視窗: **顯示(中間)結果,即顯示影像、區域和 XLD 等標志性資料,
  2. **程式視窗: **即輸入和編輯代碼的地方,
  3. 變數視窗: 顯示所有變數,即顯示圖示變數(iconic variables)和控制變數,圖示變數包含圖示資料,控制變數包含控制資料,

image

3.2,示例程式

推薦觀看視頻教程: Integrate HDevelop code into a C++ application using the Library Project Export,

分步說明的描述可以參考 《quick_guide》 檔案的3.2 節內容,

四,更多參考資料

HALCON 相關檔案描述及下載鏈接匯總如下表所示,

REFERENCE MANUAL 參考手冊 下載鏈接 檔案大小
HALCON Operator Reference(HALCON 算子參考資料) 下載 PDF
在線閱讀 (需要 Javascript)
24.8 MB
BASICS 基礎知識 下載鏈接 檔案大小
Quick Guide(快速指南) 下載 PDF 2.6 MB
Installation Guide(安裝指南) 下載 PDF 0.4 MB
HDevelop Users' Guide(HDevelop 用戶指南) 下載 PDF 6.2 MB
Solution Guide I - Basics(解決方案指南 I - 基礎知識) 下載 PDF 6.7 MB
Solution Guide II - A - Image Acquisition(解決方案指南 II-B - 影像采集) 下載 PDF 0.7 MB
Solution Guide II - B - Matching(解決方案指南 II-B - 匹配) 下載 PDF 3.4 MB
Solution Guide II - C - 2D Data Codes(解決方案指南 II-C - 二維碼) 下載 PDF 4.6 MB
Solution Guide II - D - Classification(解決方案指南 II-D - 分類) 下載 PDF 4.3 MB
Solution Guide III - A - 1D Measuring(解決方案指南 III-A - 1D 測量) 下載 PDF 1.2 MB
Solution Guide III - B - 2D Measuring(解決方案指南 III-B - 2D 測量) 下載 PDF 2.5 MB
Solution Guide III - C - 3D Vision(解決方案指南 III-C - 3D 視覺) 下載 PDF 14.2 MB
Technical Updates(技術更新) 下載 PDF 0.2 MB

本文由博客一文多發平臺 OpenWrite 發布!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/539348.html

標籤:其他

上一篇:基于訓練和推理場景下的MindStudio高精度對比

下一篇:云原生周刊 | 美國國防部發布零信任戰略與路線圖

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more