Halcon-模板匹配(WPF)

halcon的代码

dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
read_image (Image, 'C:/Users/CF/Desktop/image.jpg')
dev_display (Image)draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
reduce_domain (Image, Rectangle, ImageReduced)
crop_domain (ImageReduced, ImagePart)create_shape_model (ImagePart, 'auto', -0.39, 0.79, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)write_shape_model (ModelID, 'C:/Users/CF/Desktop/shapeModel1.shm')find_shape_model (ImagePart, ModelID, -0.39, 0.79, 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
halcon结果

 

WPF代码:

xaml:
<Window x:Class="HalconWPF.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:halcon="clr-namespace:HalconDotNet;assembly=halcondotnet"xmlns:local="clr-namespace:HalconWPF"mc:Ignorable="d"WindowStartupLocation="CenterScreen"Title="WPF/Halcon_TemplateMatchingExample" Height="450" Width="800"><Grid><Grid.RowDefinitions><RowDefinition Height="auto"/><RowDefinition/><RowDefinition Height="40"/></Grid.RowDefinitions><StackPanel Orientation="Horizontal"><Button Content="读取图片" Click="BtnReadImage_Click" Margin="5" Padding="5"/><Button Content="定位结果" Click="BtnRun_Click" Margin="5" Padding="5"/></StackPanel><halcon:HSmartWindowControlWPF x:Name="HSmart" Grid.Row="1"/><TextBlock  x:Name="txtResult" Background="LightBlue"  Grid.Row="2" Margin="5"/></Grid>
</Window>
cs代码:
using HalconDotNet;
using System.Windows;namespace HalconWPF
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}// 创建HImage对象用于图像处理HImage hImage = new HImage();// 创建HTuple对象用于存储模型IDHTuple modelID = new HTuple();// 创建HTuple对象用于存储匹配结果的位置、角度和得分HTuple hv_Row = new HTuple(), hv_Column = new HTuple();HTuple hv_Angle = new HTuple(), hv_Score = new HTuple();// 读取图片private void BtnReadImage_Click(object sender, RoutedEventArgs e){           // 读取图像文件hImage.ReadImage("C:/Users/CF/Desktop/Image.jpg");// 在Halcon的 HSmartWindowControlWPF 控件中显示图像HSmart.HalconWindow.DispObj(hImage);}// 模板匹配 private void BtnRun_Click(object sender, RoutedEventArgs e){// 从指定路径读取形状模型文件HOperatorSet.ReadShapeModel("C:/Users/CF/Desktop/shapeModel1.shm", out modelID);// 执行模板匹配操作 HOperatorSet.FindShapeModel(hImage,          // 输入图像modelID,         // 形状模型ID-0.39, 0.79,     // 搜索角度范围0.5, 1,          // 搜索尺度范围0.5,             // 最小重叠比例"least_squares", // 匹配方法0,               // 优化参数0.9,             // 最低得分阈值out hv_Row,      // 输出匹配位置的行坐标out hv_Column,   // 输出匹配位置的列坐标out hv_Angle,    // 输出匹配位置的角度out hv_Score     // 输出匹配得分); // 将匹配结果显示在文本框中txtResult.Text = $"分数:{hv_Score.DArr[0]} , Row坐标: {hv_Row.DArr[0]} , Column坐标:{hv_Column.DArr[0]}";// 设置Halcon窗口的颜色为红色HOperatorSet.SetColor(HSmart.HalconWindow, "red");// 在Halcon窗口中绘制匹配位置的十字标记HOperatorSet.DispCross(HSmart.HalconWindow, hv_Row.DArr[0], hv_Column.DArr[0], 30, hv_Angle);}}
}
运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/58610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文看懂 Stable Diffusion是什么?能做什么?

stable diffusion是一款非常强大的AI绘画软件&#xff0c;简单来说&#xff0c;Stable Diffusion&#xff08;简称SD&#xff09;就是一个AI自动生成图片的软件&#xff0c;通过我们输入文字&#xff0c;SD就能生成对应的一张图片&#xff0c;不再需要像以前一样要把图片“画”…

Linux高阶——1027—进程间关系相关

本章节介绍&#xff0c;进程间的各种关系&#xff1a;亲缘关系&#xff0c;终端进程&#xff0c;进程组&#xff0c;会话&#xff0c;孤儿进程&#xff0c;守护进程 1、亲缘关系 Linux或unix操作系统&#xff0c;进程间具备亲缘关系&#xff0c;分为强亲缘与弱亲缘 强亲缘&a…

VoxelMap论文翻译

文章目录 前言一、介绍二. 相关工作三. 方法论A. 概率平面表示1) 点 W p i {}^{W} p_{i} Wpi​ 的不确定性&#xff1a;2) 平面不确定性建模&#xff1a; B. 粗到细高效体素地图构建1) 动机&#xff1a;2) 体素地图构建&#xff1a;3) 体素地图更新&#xff1a; C. 点到平面配…

使用LangChain控制大模型的输出——解析器Parser

LangChain框架中有两个好用的工具&#xff1a; 提示词模板(PromptTemplate)用于指定LLM的输入&#xff0c;解析器(Parser)来正确解释LLM给出的输出 即&#xff1a; 提示词模板(PromptTemplate)&#xff1a;用于格式化地接受输入string变量&#xff0c;作为完整的提示词。 如 给…

数据结构与算法实验练习(二)(排序及线性表的应用)

数据结构与算法分析课下实验练习&#xff0c;现记录一下解答过程&#xff0c;欢迎大家批评指正。 声明&#xff1a;本题目来源于西安交通大学电信学院原盛老师&#xff0c;任何单位或个人在使用、转载或引用本题目时&#xff0c;请务必标明出处为“西安交通大学电信学院原盛老…

关于回溯与分支限界的一些介绍

这篇文章将介绍回溯算法与分支限界算法的有关概念、具体应用及代码等内容。 一、回溯法 1.1 概念 回溯法是一种试探法&#xff0c;所以它也叫试探算法。它尝试构建问题的解&#xff0c;并且在发现解不满足条件的时候撤销选择&#xff08;即“回溯”&#xff09;&#xff0c;…

day05-Filebeat扩展

Filebeat对接ES加密集群 #查看集群状态 [09:22:25 rootelk1:~]#curl 10.0.0.91:9200/_cat/nodes -u elastic:1234561.编写配置文件 [09:52:06 rootelk3:/etc/filebeat]#vim 12-log-to-es_tls.yamlfilebeat.inputs: - type: logpaths:- /var/log/nginx/access.log*json.keys_un…

Vue全栈开发旅游网项目(3)-Vue路由配置

1. 配置路由 1.1 导入路由工具 文件地址&#xff1a;src\router\index.js import { createRouter, createWebHistory } from vue-router//导入配置路由的工具 import HomeView from ../views/HomeView.vue//导入组件const router createRouter({//创建路由对象history: cre…

代随(136):图论dfs——邻接矩阵

题干&#xff1a; 代码&#xff1a; #include <iostream> #include <vector> using namespace std;vector<vector<int>>res; vector<int>path;void dfs(vector<vector<int>>&graph, int x, int n) {if(x n){res.push_back(pat…

精选录屏软件大赏:满足不同场景需求的录制利器

现在是互联网的世界&#xff0c;所以很多时候学习、工作我们都离不开电脑。在我们通过互联网查看网课、开网络会议的时候是不是会因为速度太快而来不及记录&#xff1f;那我推荐使用一些windows录屏软件来记录所有重点&#xff0c;方便我们后期复盘。 1.FOXIT录屏大师 链接&a…

【python】OpenCV—findContours(4.5)

文章目录 1、功能描述2、原理分析3、代码实现4、效果展示5、完整代码6、参考 1、功能描述 输入图片&#xff0c;计算出图片中的目标到相机间的距离 2、原理分析 用最简单的三角形相似性 已知参数&#xff0c;物体的宽度 W W W&#xff0c;物体到相机的距离 D D D&#xff0…

【华为HCIP实战课程二十八】中间到中间系统协议IS-IS邻居关系排错,网络工程师

一、ISIS邻居关系条件 1、同一层次(比如Level-2路由器不能和Level-1路由器形成邻居关系) 2、同一区域(L1必须同一区域) 3、同一网段 R1和R2之间分别配置如下IP地址和掩码: R1 的接口S1/0/0掩码为/24 R2的接口S1/0/0配置成掩码/28: 此时R1和R2依然可以建立ISIS邻居关系…

文件操作和 IO(一):文件基础知识 文件系统操作 => File类

目录 1. 什么是文件 1.1 概念 1.2 硬盘, 内存, 寄存器之间的区别 1.3 机械硬盘和固态硬盘 2. 文件路径 2.1 绝对路径 2.2 相对路径 3. 文件分类 4. File 类 4.1 属性 4.2 构造方法 4.3 方法 1. 什么是文件 1.1 概念 狭义上的文件: 保存在硬盘上的文件广义的上的文…

Flutter Color 大调整,需适配迁移,颜色不再是 0-255,而是 0-1.0,支持更大色域

在之前的 3.10 里&#xff0c; Flutter 的 Impeller 在 iOS 上支持了 P3 广色域图像渲染&#xff0c;但是当时也仅仅是当具有广色域图像或渐变时&#xff0c;Impeller 才会在 iOS 上显示 P3 的广色域的颜色&#xff0c;而如果你使用的是 Color API&#xff0c;会发现使用的还是…

web自动化测试平台开发之核心执行器

web自动化测试平台开发之核心执行器 一、如何从自动化框架到核心执行器二、核心执行器框架逻辑梳理三、核心执行器利用命令驱动执行 一、如何从自动化框架到核心执行器 脚本:底层用了三个内容:pythonpytestselenium&#xff0c;线性脚本&#xff0c;只是单纯的把功能测试用例转…

Rust 力扣 - 2090. 半径为 k 的子数组平均值

文章目录 题目描述题解思路题解代码题解链接 题目描述 题解思路 半径为 k 的子数组平均值 等价于 子数组长度为2 * k 1的总和 除于 2 * k 1 我们遍历长度为2 * k 1的窗口&#xff0c;我们只需要记录窗口内的平均值即可 题解代码 impl Solution {pub fn get_averages(num…

直接内存、死锁、方法句柄

直接内存 1. 不是虚拟机运行时数据区的一部分&#xff0c;也不是《Java虚拟机规范》中定义的内存区域 2. 直接内存是在Java堆外、直接向系统申请的内存区间 3. 来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存 4. 通常&#xff0c;访问直接内存的速度会优于Java堆&am…

C++《list》

在本篇当中我们将学习STL中的list&#xff0c;在此list就是我们之前在数据结构学习过的链表&#xff0c;在本篇中我们要来了解list当中的成员函数该如何使用&#xff0c;由于list各个函数的接口和之前学习过的vector类型&#xff0c;因此在学习list的使用就较为轻松。在lis篇章…

【牛客刷题实战】二叉树遍历

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 牛客题目&#xff1a; 二叉树遍历 题目描述 输入描述&#xff1a; 输出描述&#xff1a; 示例1 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码&#xff08;C语言&#xff09; 兄弟们共勉 &#xff01;&…

vmvare启动freebsd操作系统密码忘记了怎么办?

本章教程,主要介绍,通过vmvare安装的freebsd操作系统,密码忘记了,如何重置密码。 一、重启虚拟机 在重启过程中,按键盘中是数字2,进入单用户模式。 二、进入到shell界面 在出现“Enter full pathname of shell or RETURN for /bin/sh:”直接按回车键。 三、输入命令 mou…