news 2026/5/1 10:02:46

Halcon基础知识点及其算子用法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Halcon基础知识点及其算子用法

Halcon基础知识

*快捷键:

*// 注释的符号是* *// F1--打开当前算子对应的帮助文档 *// F2--程序重置:清空运行过程中定义 / 生成的变量值,恢复至未启动初始状态,光标自动定位到第一行代码处 *// F3--激活选中程序行:取消选中代码的注释状态,程序自动定位至上次未运行位置或最新修改位置 *// F4--注释选中程序行:对选中的代码块添加注释标记,使其暂不参与程序执行 *// F5--运行全部程序:无断点时执行至程序结束;遇到断点或 stop() 语句则自动暂停 *// F6--单步执行(逐行跳过):逐行运行代码,遇自定义函数 / 算子时仅执行整体逻辑,不进入内部调试 *// F7--单步执行(逐行跳入):逐行运行代码,遇自定义函数 / 算子时进入其内部,用于调试深层逻辑 *// F8-- 单步跳出:从当前执行的函数 / 算子内部退出,回到调用该函数的下一行代码继续执行 *// F9--强制停止执行:终止当前正在运行的函数或程序进程 *// F10--断点设置 / 取消:在光标所在行标记断点;再次按下则取消该行的断点标记

*运算符:

*// 算术运算符: +(加)、-(减)、*(乘)、/(除)%(取余,返回除法运算的余数), 无自增(++)、自减(--)运算符 *// 逻辑运算符: *//逻辑与:and(所有条件均满足时结果为真) *//逻辑或:or(任意一个条件满足时结果为真) *//逻辑非:not(对条件结果取反) *//逻辑异或:xor(仅当其中一个条件满足、其余条件不满足时结果为真,多条件下不可同时满足) *//数值对应:布尔值「真」对应数值 1,「假」对应数值 0 *// 赋值运算符: =(将右侧值赋给左侧变量), 无复合赋值运算符(如+=、-=、*=、/=均不支持) *// 比较运算符: *//大于:>、小于:<、大于等于:>=、小于等于:<= *//等于:= / ==(两个符号均可用于判断左右两侧值是否相等) *//不等于:!= / #(两个符号均可用于判断左右两侧值是否不相等

*算子读取照片:

•读取照片:read_image ()
•读取多张照片:list_files()
*// 读取一张图片//--------------------- *// 参数1 读取之后图片存储的变量名 *// 参数2 是图片的路径 (printer_chip/printer_chip_01是相对路径) read_image (Image, 'printer_chip/printer_chip_01') read_image (Image1, 'C:/Users/ZN/AppData/Roaming/MVTec/HALCON-23.05-Progress/examples/images/pipe_wrench/pipe_wrench_1.png') *// ROI的代码//--------------------- gen_rectangle1 (ROI_0, 38.4831, 332.403, 309.669, 491.657) *// 定义一个变量//--------------------- x:=200 *// 加载多张图片1//--------------------- for Index := 1 to 5 by 1 read_image (Image, 'printer_chip/printer_chip_0'+Index) stop () endfor *// 读取多张图片2//--------------------- *// list_files 展示文件列表的算子 *// Files 输出参数 文件路径的集合 list_files ('D:/ChuanDingZN/全部学习记录/笔记/tupainji', 'files', Files) *// 遍历找到的所有图片//--------------------- for Index := 0 to |Files|-1 by 1 read_image (Image,Files[Index]) endfor

*使用助手读取照片:

•单张照片

•多张照片

* Image Acquisition 02: Code generated by Image Acquisition 02 *// ImageFiles元组内存入的是文件的绝对路径 list_files ('C:/Users/ZN/AppData/Roaming/MVTec/HALCON-23.05-Progress/examples/images/ampoules', ['files','follow_links'], ImageFiles) *// 通过正则筛选想要文件条件:筛选只要想要图形文件,忽略大小写 把复合条件的文件存入到到ImageFiles元祖中 *// ima|hobj:独有的文件类型 *// ignore_case:忽略大小写 tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles) *// 通过for循环,借助索引读取元组中存储的每一个图像文件 for Index := 0 to |ImageFiles| - 1 by 1 *//加载图像 read_image (Image, ImageFiles[Index]) * Image Acquisition 02: Do something endfor

*保存图像:

•直接保存原始图像:write_image()
•获取窗体句柄:dev_get_window()
•复制窗口图像生成一个图像变量:dump_window_image()
•直接保存窗口内容到文件:dump_window()
•截取图像中部分区域进行保存:crop_part()
*// Halcon保存图像 *// 获取图片 read_image (Image, 'printer_chip/printer_chip_01') *// 第一种方式: 选中图形窗口-->右键-->保存窗口 *// 第二种方式: 使用write_image算子直接保存原始图像 *// 保存原始图像数据(无窗口标注/绘制元素,仅图像本身) *// 参数1 Image:输入参数,待保存的原始图像对象 *// 参数2 'tiff':输入参数,保存格式(支持tiff/jpg/png/bmp等,区分大小写) *// 参数3 0:输入参数,保存质量(0=默认质量;jpg格式可设1-9,9=最高质量) *// 参数4 输入参数,保存路径+文件名 write_image (Image, 'tiff', 0, 'D:/ChuanDingZN/全部学习记录/新/Halcon/day03/2.算子保存') *// 获取窗口句柄 dev_get_window (WindowHandle) *// 复制窗口图像生成一个图像变量 *// 将窗口显示内容(含绘制元素)复制为图像变量 *// 参数1 Image1:输出参数,窗口内容对应的图像变量 *// 参数2 WindowHandle:输入参数,目标窗口句柄 dump_window_image (Image1,WindowHandle ) *// 直接保存窗口内容到文件 默认是保存到类文件同级路径 (例程同级别目录) *// 参数1 WindowHandle:输入参数,目标窗口句柄 *// 参数2 'tiff':输入参数,保存格式 *// 参数3 输入参数,保存路径+文件名 *// 备注:直接保存窗口截图,包含所有绘制元素,与窗口显示效果完全一致 dump_window (WindowHandle, 'tiff', 'D:/ChuanDingZN/全部学习记录/新/Halcon/day03/3.halcon_dump') *// 截取图像中部分区域进行保存 生成一个图形变量 *// 参数1 Image1:输入参数,原始图像(此处为窗口复制的图像) *// 参数2 ImagePart:输出参数,截取后的区域图像 *// 参数3 20:输入参数,截取区域的起始行坐标(Row,垂直方向偏移) *// 参数4 150:输入参数,截取区域的起始列坐标(Column,水平方向偏移) *// 参数5 50:输入参数,截取区域的宽度(水平方向像素数) *// 参数6 260:输入参数,截取区域的高度(垂直方向像素数) *// 备注:坐标规则:Row越大越靠下,Column越大越靠右,需确保区域在图像范围内 crop_part (Image1, ImagePart, 20, 150, 50, 260)

*图片预处理分割:

•阈值分割:threshold ()
•连通器:connection ()
•筛选:select_shape()
*// 读取一张图片 *// 参数1 读取之后图片存储的变量名 *// 参数2 是图片的路径 read_image (Image, 'clip') *// 1阈值分割 就是斑点分析工具 *// 参数2 Region 分割之后的区域 *// 参数3、4 提取区域阈值范围 threshold (Image, Region, 10, 119) *// 2连通器区域 该分开的分开该合并的合并 *// 参数1 Region 连通的区域 *// 参数2 ConnectedRegions 连通之后的区域,分开之后的区域 connection (Region, ConnectedRegions) *// 3根据筛选条件进行筛选 *// 参数1 ConnectedRegions 进行筛选的目标区域 *// 参数2 SelectedRegions 根据条件筛选之后的区域 *// 参数3 area 筛选条件是面积 *// 参数4 and 并且 *// 参数5、6 6000, 99999 面积最小值和最大值 select_shape (ConnectedRegions, SelectedRegions1, 'area', 'and', 3960, 8500) *select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 6000, 99999)

希望对大家有所帮助, 感谢大家的关注和点赞。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 7:26:40

Scanner类的常用方法详解:全面讲解输入处理核心技巧

扫描的艺术&#xff1a;深入掌握Java中Scanner类的输入处理精髓你有没有遇到过这样的情况&#xff1f;写了一个看似完美的控制台程序&#xff0c;结果用户刚一输入就“炸了”——nextLine()莫名其妙返回空字符串、数字输入报错崩溃、多词名字读不全……别急&#xff0c;这些问题…

作者头像 李华
网站建设 2026/5/1 9:38:46

基于python的艺术作品展示平台 艺术家在线交流系统 关注z50di044

目录基于Python的艺术作品展示平台与艺术家在线交流系统关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;基于Python的艺术作品展示平台与艺术家在线交流系统 Python作为一种功能强大…

作者头像 李华
网站建设 2026/4/29 5:47:20

SAP·SD POD业务详解

一、业务背景 在某些行业&#xff0c;销售发货给客户&#xff0c;中途可能有损耗。发货数量与客户收获数量不等。例如液体或散装物等等。这样的话&#xff0c;开票数量要根据客户确认数量而不是发货数量&#xff0c;而交货成本还是根据交货数量来算。要实现此功能&#xff0c;…

作者头像 李华
网站建设 2026/5/1 3:12:42

基于Thinkphp-Laravel的智能分配出租车叫车打车网约车管理系统的可视化大屏分析系统设计

目录摘要项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理摘要 Thinkphp-Laravel智能分配出租车叫车管理系统整合了PHP框架的高效开发能力与智能算法优化&#xff0c;实现出租车资源的动态调度与可视化分析。系统采用Laravel的优雅语法与ThinkPHP的…

作者头像 李华
网站建设 2026/5/1 3:19:06

10. CPU-GPU协作渲染

1.GPU是如何知道要渲染对象 2.CPU 怎么知道 GPU 渲染完毕 3.GPU 的显存数据是什么时机上传的1.GPU是如何知道要渲染对象 GPU是典型的"被动执行设备", 自己不会主动渲染, 所有渲染任务都由CPU通过"命令缓冲区(Command Buffer)"下方, 流程分四步:1).CPU准备&…

作者头像 李华
网站建设 2026/5/1 6:29:15

Thinkphp-Laravel基于微信小程序的物流仓储管理系统 可视化

目录 系统概述核心功能技术实现优势与价值 项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理 系统概述 Thinkphp-Laravel基于微信小程序的物流仓储管理系统是一款集成后端框架&#xff08;ThinkPHP与Laravel&#xff09;与前端微信小程序的解决方案…

作者头像 李华