Halcon-模板匹配(WPF)

ops/2024/11/2 12:49:04/

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.ppmy.cn/ops/130427.html

相关文章

如何在Linux系统中使用Apache HTTP Server

如何在Linux系统中使用Apache HTTP Server Apache简介 安装Apache 在Debian/Ubuntu系统中安装 在CentOS/RHEL系统中安装 启动Apache服务 验证Apache是否正在运行 访问Apache默认页面 配置Apache虚拟主机 创建虚拟主机配置文件 示例虚拟主机配置 创建网站根目录 准备静态网站内…

C++ --- 信号处理

目录 一.什么是信号处理&#xff1f; 二.常见信号&#xff1a; 三.signal() 函数的使用&#xff1a; 2.signal()注意事项&#xff1a; 3.使用场景&#xff1a; 四.raise()函数的使用&#xff1a; 注意事项 五.自定义信号处理函数&#xff1a; 代码说明&#xff1a; 一.…

Linux高阶——1027—守护进程

1、守护进程的基本流程 1、父进程创建子进程&#xff0c;父进程退出 守护进程是孤儿进程&#xff0c;但是是工程师人为创建的孤儿进程&#xff0c;低开销模式运行&#xff0c;对系统没有压力 2、子进程&#xff08;守护进程&#xff09;脱离控制终端&#xff0c;创建新会话 …

OpenAI推出搜索GPT,进军搜索引擎领域

OpenAI 推出了一项新功能——Search GPT&#xff0c;为 ChatGPT 引入实时网络搜索功能&#xff0c;使其站上与 Google 和 Bing 等搜索巨头竞争的舞台。 OpenAI 产品的重大变化&#xff0c;Search GPT 承诺提供快捷、实时的答案&#xff0c;并附上可靠来源的链接。 ChatGPT 一直…

「C/C++」C++11 之 std::pair单元存储的途径

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

Spring Boot JPA中的Page组件详解

1. 简介 在开发企业级应用时&#xff0c;分页查询是一个非常常见的需求。Spring Boot JPA提供了强大的分页功能&#xff0c;通过Page接口和Pageable接口&#xff0c;我们可以轻松实现灵活的分页查询。本文将详细介绍Page组件的使用方法及其核心特性。 2. 核心概念 2.1 Page接…

《化学试剂》

《化学试剂》主要报道化学试剂、精细化学品、专用化学品及相关领域的最新研究进展、理论知识、科研成果、技术经验、新产品的合成、分离、提纯以及各种分析测试技术、分析仪器、行业动态等&#xff0c;及时反映国内外的发展水平。 《化学试剂》投稿指南 目前《化学试剂》期刊已…

sklearn机器学习实战

1.PCA降维 不是每个数据特征对分析的问题都有用。即使有用&#xff0c;对问题的重要程度也不一样。而我们需要过滤和筛选一些特征&#xff0c;去除冗余。 数据降维是指采取某种映射方法&#xff0c;把高维空间中可能包含冗余信息和噪声的数据点映射到低维空间&#xff0c;在低…