WPF+Halcon 培训项目实战(10):HS组件绘制图案

这篇具有很好参考价值的文章主要介绍了WPF+Halcon 培训项目实战(10):HS组件绘制图案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

为了更好地去学习WPF+Halcon,我决定去报个班学一下。原因无非是想换个工作。相关的教学视频来源于下方的Up主的提供的教程。这里只做笔记分享,想要源码或者教学视频可以和他联系一下。

相关链接

微软系列技术教程 WPF 年度公益课程

Halcon开发 CSDN博客专栏

个人学习的Gitee 项目地址仓库

项目专栏

WPF+Halcon实战项目

运行环境

  • .net core 8.0
  • visual studio 2022
  • halcon HDevelop 20.11
  • windows 11

匹配图片

WPF+Halcon 培训项目实战(10):HS组件绘制图案,WPF+Halcon实战项目,wpf,Halcon

模板匹配

加载模板文件

我们加载前面生成的模板文件

WPF+Halcon 培训项目实战(7):目标匹配助手

将其放到我们的Resource文件夹下面

WPF+Halcon 培训项目实战(10):HS组件绘制图案,WPF+Halcon实战项目,wpf,Halcon
WPF+Halcon 培训项目实战(10):HS组件绘制图案,WPF+Halcon实战项目,wpf,Halcon

匹配代码

LocateBtn = new RelayCommand(() =>
{
    HTuple hv_Row = new HTuple(), hv_Column = new HTuple();
    HTuple hv_Angle = new HTuple(), hv_Score = new HTuple();
    HOperatorSet.ReadShapeModel("Resources/output.shm",out template_model);
    MsgHelper.Info("模板匹配文件加载成功!");
    HOperatorSet.FindShapeModel(hImage, template_model, -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);

    //输出匹配结果
    MsgHelper.Success($"分数:{hv_Score},Row坐标:{hv_Row},Col坐标:{hv_Column},角度:{hv_Angle}");
});

运行结果

WPF+Halcon 培训项目实战(10):HS组件绘制图案,WPF+Halcon实战项目,wpf,Halcon

绘制十字标

            LocateBtn = new RelayCommand(() =>
            {
                HTuple hv_Row = new HTuple(), hv_Column = new HTuple();
                HTuple hv_Angle = new HTuple(), hv_Score = new HTuple();
                HOperatorSet.ReadShapeModel("Resources/output.shm",out template_model);
                MsgHelper.Info("模板匹配文件加载成功!");
                HOperatorSet.FindShapeModel(hImage, template_model, -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);

                //输出匹配结果
                MsgHelper.Success($"分数:{hv_Score},Row坐标:{hv_Row},Col坐标:{hv_Column},角度:{hv_Angle}");

                //将笔刷颜色设置为红色
                HOperatorSet.SetColor(halconWindow.HalconWindow,"red");
                
                //在HS控件上面绘制十字标
                HOperatorSet.DispCross(halconWindow.HalconWindow, hv_Row, hv_Column,30, hv_Angle);
            });

WPF+Halcon 培训项目实战(10):HS组件绘制图案,WPF+Halcon实战项目,wpf,Halcon

WPF HS组件绘制图像

HS组件可以使用Attach和Detach来添加或者删除图案

                // 显示绘制图案
                HalconWindow.HalconWindow.AttachDrawingObjectToWindow(rect);
                // 去除绘制图案
                HalconWindow.HalconWindow.DetachDrawingObjectFromWindow(rect);

Halcon (3):窗体常用语法使用

HS所有的代码都可以在Halcon源码中找到对应的方法

绘制的图案类型一般就以下几种,右边是对应的halcon算子:

  • 矩形:disp_rectangle1
  • 圆形:disp_circle
  • 十字标:disp_cross
  • 箭头:disp_arrow
  • 文本:disp_message

由于代码重复度太高,所以我们这里就直接写主要代码了

初始化代码,我们需要在ReadImg的时候就将笔刷设置为红色,图像类型设置为空心

            ReadImgBtn = new RelayCommand(() =>
            {
                try
                {
                    MsgHelper.Info("读取图片");
                    hImage.ReadImage("Resources/1.png");

                    HalconWindow.HalconWindow.DispObj(hImage);
                    //读取后将图片居中
                    HalconWindow.SetFullImagePart();
                    //读取后将图片完全拉伸充满整个屏幕
                    //HalconWindow.SetFullImagePart(Image);

                    //将笔刷颜色设置为红色
                    HOperatorSet.SetColor(HalconWindow.HalconWindow, "red");
                    //将图像设置为无填充
                    HOperatorSet.SetDraw(HalconWindow.HalconWindow, "margin");

                }
                catch (Exception ex)
                {

                    MsgHelper.Error("HS组件加载图片失败!:" + ex.Message);
                }

            });

事件代码


        private void DrawRectangle()
        {

            HOperatorSet.DispRectangle1(HalconWindow.HalconWindow, 100, 200, 300, 400);
        }

        private void DrawArrow()
        {

            HOperatorSet.DispArrow(HalconWindow.HalconWindow, 20, 20, 130, 130, 10);
        }

        private void DrawCircle()
        {
            HOperatorSet.DispCircle(HalconWindow.HalconWindow, 64, 64, 64);

        }

        private void DrawText()
        {

            HOperatorSet.DispText(HalconWindow.HalconWindow, "打印消息", "window", 12, 12, "black", null, null);

        }

        private void DrawCross()
        {
            HOperatorSet.DispCross(HalconWindow.HalconWindow, 20, 20, 30, 0);

        }

WPF+Halcon 培训项目实战(10):HS组件绘制图案,WPF+Halcon实战项目,wpf,Halcon
具体的参数有什么意思可以自己去Halcon算子上面去查找一下,逻辑是一样的

绘制和生成的区别

拿绘制和生成矩形来做区别:文章来源地址https://www.toymoban.com/news/detail-772130.html

// 绘制矩形
HOperatorSet.DispRectangle1(HalconWindow.HalconWindow, 100, 200, 300, 400);

// 生成矩形
var rect = HDrawingObject.CreateDrawingObject(HDrawingObject.HDrawingObjectType.RECTANGLE1, 100, 200, 300, 400);
// 显示绘制图案
HalconWindow.HalconWindow.AttachDrawingObjectToWindow(rect);

绘制 生成
能否修改 不能,画上去就固定了 能,可以进行拖拽和缩放,还能绑定事件回调
如何添加 使用Disp函数添加 先要实例化一共HDrawingObject对象,使用Attach方法附加到窗口上才可以
如何清空 使用ReadImg重新读取一遍图像来清空 使用Detach分离来清空
使用场景 给图像打印信息 添加可拖动的选区

到了这里,关于WPF+Halcon 培训项目实战(10):HS组件绘制图案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于视觉人机器视觉现场线下培训-设备课-项目环境场景搭建

    关于视觉人机器视觉培训-设备课要有自己的特色,场景的灵活布置,其实设备课程分为两部分初级设备课,与高级设备课。中级暂不设置。 设备课还是以小型化设备为主,为学员提供硬件学习资源。从运动控制,与PLC通讯,机械臂等,场景搭建从小开始,落实实处,完善学

    2023年04月19日
    浏览(40)
  • 年度优秀项目呈献|江苏省泗洪县人民医院培训中心音视频系统建设

    近年来,随着人工智能的迅猛发展,医疗卫生领域迎来创新发展的新浪潮,各类信息化系统已成为各大医院机构的“标配”。远程问诊、线上会诊、视频探病、网络示教......智慧医疗已经深入到医疗行业的各个环节,在现代视讯设备的加持下和项目实践探索中逐步发展和完善

    2023年04月08日
    浏览(44)
  • 【计算机毕业设计】python在线课程培训学习考试系统637r7-PyCharm项目

    使用说明 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 使用PyCharm 导入项目,修改配置,运行项目; 将项目中config.ini配置文件中的数据库配置改为自己的配置,然后运行;主要管理员对个人中心、用户管理、课程类型管理、课程信息管理

    2024年02月07日
    浏览(57)
  • SSM培训报名管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

    一、源码特点   SSM 培训报名管理系统是一套完善的信息系统,结合SSM框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主 要采用B/S模式开发。 SSM培训报名管理系统1 前段主要技术html div js  后端主要技

    2024年02月08日
    浏览(36)
  • Wpf 使用 Prism 实战开发Day10

    1-9章节已经把基本功能都做好了,但页面的数据是后台模拟生成的静态数据。接下来所有章节就是实现,页面的所有数据都是从数据库中获取,并且实现页面数据的持久化以及增删改查。 使用Sqlite 做为数据库  1.打开 MyToDo.Api项目,右键=》选择 管理NuGet 程序包 ,进行下载安

    2024年01月25日
    浏览(43)
  • WPF实战学习笔记10-创建todo接口

    新建控制器 新建文件 + webapi工程 ./Controllers/TodoController.cs 添加类 ### 新建服务 #### 新建文件 + webapi工程 ./Service/ApiReponse.cs ./Service/IBaseService.cs ./Service/IToDoService.cs ./Service/ToDoService.cs 添加通用返回结果类 ApiReponse.cs 添加基础接口 IBaseService.cs 添加todo接口 IToDoService.cs 添加TODO接口

    2024年02月16日
    浏览(41)
  • WPF MaterialDesign 初学项目实战(0):github 项目Demo运行

    最近在学B站的WPF项目实战合集(2022终结版),但是到22P时候发现UI框架 MaterialDesignThemes的Github上面的程序没办法正常运行,最后折腾了好久终于解决。 github地址 gitcode镜像地址 下载成功后是如下效果 打开这个文件 MaterialDesignToolkit.Wpf.slnf 选择这个Demo 下载.NET Framework 4.6.2 下载之

    2024年02月07日
    浏览(46)
  • WPF MaterialDesign 初学项目实战(3)动态侧边栏

    WPF MaterialDesign 初学项目实战(0):github 项目Demo运行 WPF MaterialDesign 初学项目实战(1)首页搭建 WPF MaterialDesign 初学项目实战(2)首页导航栏样式 新建MenuBar文件 Common Models MenuBar 添加基本成员 注意,Views和VIewModels文件夹的名字是一定要这么写,这和Prism框架的自动绑定有关 绑

    2024年02月05日
    浏览(52)
  • WPF HALCON HSmartWindowControlWPF 鼠标绘制ROI

    更新:放出完整源码,供大家学习参考 yStack/SoupImgViewer (github.com) https://github.com/yStack/SoupImgViewer 0. 需求 在HSmartWindowsControlWPF上用鼠标绘制ROI,且显示绘制时的鼠标交互过程,最终效果如下: 1. 基本思路 在HSmartWindowControl上布置一层透明的Canvas,用于实时显示鼠标绘制ROI的过程

    2024年02月15日
    浏览(47)
  • WPF实战项目十四(API篇):登录注册接口

    1、新建UserDto.cs 2、新增ILoginService接口 3、实现LoginService接口 4、新增登录控制器LoginController 5、添加AutoMapper映射关系 6、在program.cs里面添加服务 7、F5运行项目

    2024年02月10日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包