C# 基于halcon的視覺工作流-章22-直線查找

C# 基于halcon的視覺工作流-章22-直線查找

本章目標:
一、創建直線卡尺工具;
二、測量及擬合直線;
三、匹配批量查找;

在這里插入圖片描述
尋找整圖中所有直線,可用霍夫直線查找等算法,而尋找圖片中指定區域的直線,除了霍夫直線查找等算法外,halcon還封裝了自有的查找測量工具。查找原理是將指定區域劃分為等格區域,再對各區域求取梯度變化劇列的點,最后將各點連接擬合組成直線。
在這里插入圖片描述
一、創建直線卡尺工具
創建卡尺工具分如下幾步:
1、創建計量模型
halcon算子create_metrology_model用于創建計量模型,輸出模型句柄,為后續創建各具體測量對象作準備。
與C#聯合開發時可用如下方法實現
HOperatorSet.CreateMetrologyModel(out HTuple auto_MetrologyHandle);
其中,auto_MetrologyHandle為輸出模型句柄

2、創建直線測量對象
halcon算子add_metrology_object_generic用于將計量對象添加到計量模型中,計量對象有多種,直線、圓、矩形和橢圓等,本文中屬直線。
與C#聯合開發時可用如下方法實現
HOperatorSet.AddMetrologyObjectGeneric(auto_MetrologyHandle,shape,shapeParam, measureLength1,measureLength2,measureSigma,measureThreshold, genParamName ,genParamValue, out HTuple index );

其中,auto_MetrologyHandle為輸入模型句柄,
shape為計量對象的類型,此處為直線line,(圓circle, 橢圓ellipse, 矩形rectangle2)
lineParams為計量對象的參數,
measureLength1為卡尺半長,
measureLength2為卡尺半寬,
measureSigma為高斯函數的西格瑪平滑,
measureThreshold為最小邊緣振幅,
genParamName 為參數名,
genParamValue為參數值,
index 為輸出的計量對象的索引

3、設置測量對象參數
設置參數可以在步驟2中參數名、參數值中進行設置,也可按如下進行單獨設置。
halcon算子add_metrology_object_generic用于為計量對象設置參數
與C#聯合開發時可用如下方法實現
HOperatorSet.SetMetrologyObjectParam(auto_MetrologyHandle,index,genParamName,genParamValue,);
其中,auto_MetrologyHandle為輸入模型句柄,
index為計量對象索引,
genParamName 為參數名,
genParamValue為參數值

參考如下圖
在這里插入圖片描述
二、測量及擬合直線
測量及擬合分如下幾步:
1、測量擬合
halcon算子apply_metrology_model用于測量并擬合計量模型中所有計量對象的幾何形狀。
與C#聯合開發時可用如下方法實現
HOperatorSet.ApplyMetrologyModel(Image, auto_MetrologyHandle);
其中,Image為輸入圖像,
auto_MetrologyHandle為輸入模型句柄

2、獲取邊緣點坐標
halcon算子get_metrology_object_measures用于獲取計量模型的計量對象的測量區域和邊緣位置結果,即取得找到的邊緣點的坐標。
與C#聯合開發時可用如下方法實現
HOperatorSet.GetMetrologyObjectMeasures(out HObject calipersCoutours, auto_MetrologyHandle, index , transition, out HTuple hv_Row, out HTuple hv_Column);

其中,calipersCoutours為輸出的卡尺輪廓,
auto_MetrologyHandle為輸入模型句柄,
index 為計量對象索引,此處為all,
transition為選擇亮/暗或暗/亮邊,此處為all,
hv_Row為找到的邊緣點的行坐標,
hv_Column為找到的邊緣點的列坐標

在這里插入圖片描述
3、獲取擬合的直線坐標
halcon算子get_metrology_object_measures用于獲取計量模型的測量結果。
與C#聯合開發時可用如下方法實現
HOperatorSet.GetMetrologyObjectResult(auto_MetrologyHandle, index, instance, genParamName , genParamValue, out HTuple Parameter);
其中,auto_MetrologyHandle為輸入模型句柄,
index 為計量對象索引,此處為all,
instance 為計量對象的實例,此處為all,
genParamName 為參數名,此處為result_type,
genParamValue為參數值,此處為all_param,
Parameter為輸出結果參數,直線的起末點坐標

4、獲取擬合的直線輪廓
halcon算子get_metrology_object_result_contour用于查詢計量對象的結果輪廓。
與C#聯合開發時可用如下方法實現
HOperatorSet.GetMetrologyObjectResultContour(out HObject ho_ContourXld, auto_MetrologyHandle, index, instance , resolution );
其中,ho_ContourXld為輸出輪廓,
auto_MetrologyHandle為輸入模型句柄,
index 為計量對象索引,此處為all,
instance 為計量對象的實例,此處為all,
resolution 為相鄰輪廓點之間的距離,此處為默認值1.5

在這里插入圖片描述
三、匹配批量查找
本文中結合了模板匹配,根據模板匹配查找到各目標圖像,再根據目標圖像定位到查找區域,最后找到目標直線。核心點在于將模板匹配坐標進行仿射變換,取得查找區域坐標。
效果如下圖,不論方向、角度如何,都能自動找到各零件指定區域的直邊
在這里插入圖片描述
卡尺理論理解-參考鏈接
https://blog.csdn.net/qq_37299618/article/details/119606955

上述內容需要一定的技術功底,本章至此已結束,歡迎閱讀下章,謝謝!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90244.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90244.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90244.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

統計與大數據分析與數學金融方向課程差異有哪些?如何提升職場競爭力?

準大一新生在選擇專業時,常常會在 “統計與大數據分析” 和 “數學金融” 之間猶豫不決。這兩個專業看似都與數字、模型打交道,課程設置存在一定交叉,但核心方向又各有側重。深入了解它們的異同,能為專業選擇和學習規劃提供更清晰…

游戲開發Unity/ ShaderLab學習路徑

掌握 ShaderLab 需要循序漸進地學習,結合理論、實踐和工具。以下是一個推薦的學習路徑,幫助你從零基礎逐步進階: 階段一:基礎準備 (理解核心概念與環境)必備知識: 編程基礎: 至少熟悉一種編程語言&#xff…

算法----二叉搜索樹(BST)

系列文章目錄 算法----滑動窗口 算法----二叉樹 文章目錄系列文章目錄二叉搜索樹心法(特性篇)二叉搜索樹心法(基操篇)1、判斷 BST 的合法性2、在 BST 中搜索元素3、在 BST 中插入一個數4、在 BST 中刪除一個數二叉搜索樹心法&…

GitHub Actions打包容器,推送 AWS ECR 并使 EKS 自動拉取以完成發版部署

以下是關于 EKS 直接拉取 ECR 鏡像的解答,以及如何通過 GitHub Actions 將項目打包為容器、推送至 AWS ECR 并使 EKS 自動拉取以完成發版部署的詳細步驟。當前時間為 2025 年 7 月 23 日下午 12:27 HKT,基于最新技術實踐提供方案。1. EKS 直接拉取 ECR 鏡…

洛谷刷題7.24

P1087 [NOIP 2004 普及組] FBI 樹 - 洛谷 簡單的二叉樹遍歷 #include<bits/stdc.h> #define ll long long using namespace std; int n; char show(string s){if(s.find(1)string::npos) return B;if(s.find(0)string::npos) return I;return F; } void dfs(string s){…

FreeRTOS—二值信號量

文章目錄一、二值信號量簡介二、二值信號量相關的API函數2.1.動態方式創建二值信號量2.2.獲取信號量2.3.釋放信號量三、實驗3.1.實驗設計3.2.軟件設計一、二值信號量簡介 二值信號量的本質是一個隊列長度為 1 的隊列&#xff0c;該隊列就只有空和滿兩種情況&#xff0c;也就是…

挖掘錄屏寶藏:Screenity 深度解析與使用指南

挖掘錄屏寶藏&#xff1a;Screenity 深度解析與使用指南 在數字內容創作與信息分享日益頻繁的今天&#xff0c;錄屏軟件成為了眾多創作者、教育者和辦公族的必備工具。今天&#xff0c;我要給大家介紹一款在 GitHub 上收獲了大量關注的開源錄屏軟件 ——Screenity。它功能強大…

4.1.2 XmlInclude 在 C# 中的作用及示例

xmlInclude 是 .NET 中用于 XML 序列化的一個重要特性,XmlInclude 的主要作用是: 1.告知 XML 序列化器可能遇到的派生類型 2.解決多態類型的序列化和反序列化問題 3.允許基類序列化時包含派生類信息 當你有基類引用指向派生類對象時,如果不使用 XmlInclude,序列化器…

ARM匯編常見偽指令及其用法示例

偽指令不是指令&#xff0c;偽指令和指令的根本區別是經過編譯后會不會生成機器碼。 偽指令的意義在于指導編譯過程。 偽指令是和具體的編譯器相關的&#xff0c;我們使用gnu工具鏈&#xff0c;因此學習gnu環境下的匯編偽指令。在 ARM 匯編中&#xff0c;偽指令&#xff08;Pse…

算法調試技巧

引言算法調試常比編寫更耗時&#xff0c;尤其是動態規劃、遞歸等邏輯復雜的代碼。本文分享一套系統化的調試方法&#xff0c;幫助快速定位問題。一、調試前的準備代碼格式化使用統一縮進&#xff08;4 空格&#xff09;和命名規范&#xff0c;避免因格式混亂導致的邏輯誤讀。邊…

每日功能分享|讓觀看者體驗“無縫鏈接”觀看的功能——視頻自動續播功能

你是否遇到過這樣的困擾——看到一半的視頻&#xff0c;關閉后卻忘記進度&#xff0c;再打開時需要手動拖拽尋找上次的觀看位置&#xff1f;如今&#xff0c;“視頻自動續播功能”完美解決了這一痛點&#xff01;無論是在線教育課程、影視劇集還是企業內部員工培訓&#xff0c;…

AWS: 云上偵探手冊,七步排查ALB與EC2連接疑云

今天&#xff0c;咱們來聊一個對于許多剛接觸AWS的運維同學來說&#xff0c;既常見又有點頭疼的話題&#xff1a;如何優雅地排查和解決AWS上ALB&#xff08;Application Load Balancer&#xff09;暴露EC2服務時遇到的種種疑難雜癥。 最近&#xff0c;我剛幫一個朋友解決了類似…

EIDE 創建基于STM32-HD的項目快速創建流程

EIDE 創建基于STM32-HD的項目流程芯片系列定義宏Flash 大小RAM 大小STM32F10x_HD#define STM32F10X_HD256KB~512KB48KB~64KBSTM32F10x_MD#define STM32F10X_MD64KB~128KB20KBSTM32F10x_LD#define STM32F10X_LD16KB~32KB4KB~10KB 新建項目遠程倉庫獲取裸機開發程序STM(意法半導體…

使用 QLExpress 構建靈活可擴展的業務規則引擎

目錄 一、什么是 QLExpress&#xff1f; 二、推薦系統中的規則腳本應用 1 場景描述 2 推薦規則腳本&#xff08;QLExpress&#xff09; 3 系統實現 4 執行結果 5 推薦系統應用建議 三、風控系統中的規則判定 1 場景描述 2 風控規則腳本&#xff08;QLExpress&#xff…

【硬件-筆試面試題】硬件/電子工程師,筆試面試題-13,(知識點:DC-DC電源,相位裕度,增益裕度)

目錄 1、題目 2、解答 相位裕度 增益裕度 3、相關知識點 一、波特圖 二、相位裕度 三、增益裕度 四、在 DC - DC 電源中的應用 【硬件-筆試面試題】硬件/電子工程師&#xff0c;筆試面試題匯總版&#xff0c;持續更新學習&#xff0c;加油&#xff01;&#xff01;&a…

學生信息管理系統 - HTML實現增刪改查

學生信息管理系統 - HTML實現增刪改查 效果圖 代碼 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><titl…

Agile簡介

Agile&#xff08;敏捷&#xff09;是一種軟件開發方法論&#xff0c;核心是通過快速迭代、靈活響應變化&#xff0c;解決傳統軟件開發中周期長、需求變更困難等問題&#xff0c;最終高效交付符合用戶實際需求的產品。 一、Agile 的起源&#xff1a;為什么需要敏捷&#xff1f;…

關于 URL 中 “+“ 號變成空格的問題

當你在 URL 中傳遞參數時&#xff0c;加號 () 會被自動轉換為空格&#xff0c;這是 URL 編碼的標準行為。問題原因在 URL 中&#xff1a;空格會被編碼為 號當 URL 被解碼時&#xff0c; 號又會被轉換回空格這會導致原始數據中的 號丟失解決方案你需要對參數值進行正確的 URL …

綜合實驗(2)

文章目錄 目錄 文章目錄 前言 OSPF運行在GRE隧道概述 典型應用場景 OSPF over GRE 配置 總結 前言 OSPF運行在GRE隧道概述 GRE&#xff08;Generic Routing Encapsulation&#xff09;隧道是一種通過封裝原始數據包在IP網絡中創建虛擬點對點連接的隧道技術。OSPF&#xff08;…

【應急響應工具教程】司稽(Whoamifuck):純Shell打造的Linux應急響應利器

1、工具簡介司稽&#xff08;Whoamifuck或Chief-Inspector,簡稱"who"&#xff09;&#xff0c;永恒之鋒發布的第一款開源工具&#xff0c;這是一款由shell編寫的Linux應急響應腳本&#xff0c;能對基本的檢查項進行輸出和分析&#xff0c;并支持一些擴展的特色功能。…