摘要: 1、Halcon本地函数封装和修改 详见我的另一篇文章:《Halcon小函数的封装和代码导出》。 2、公用函数的封装和修改 选中代码行,右键“创建新函数”,在弹出的窗口中的下拉框中选择“HDevelop函数文件(.hdvp)”: 该函数的默认保存的路径为: 编写好以后,只要在procedures目录 阅读全文
posted @ 2019-04-01 19:13 xh6300 阅读(1719) 评论(0) 推荐(0) 编辑
摘要: 本节的内容主要是对大量相关算子的掌握。 1、图像的常规运算 add_image 使两张图像相加 sub_image 图像作差 mult_image 图像相乘 div_image 图像相除 abs_image 计算一张图像的绝对值(图像的阈值范围不一定都是0-255,“灰度值”可能为负) invert 阅读全文
posted @ 2019-04-01 18:01 xh6300 阅读(2172) 评论(0) 推荐(0) 编辑
摘要: 1、跟其他语言不完全一致的表达符号 赋值符号 := 引号 ' ' (一律是单引号) 求商求余 / % (一个整数除以另一个数,如何使商是实型的?即浮点型) 逻辑运算 and or not xor(异或) 逻辑真假 true false 等于 = 和 == 都行 不等于 != 和 # 都行 2、程序控 阅读全文
posted @ 2019-04-01 17:38 xh6300 阅读(6062) 评论(0) 推荐(0) 编辑
摘要: 模板匹配与定位配准通常是相辅相成的。 通常来说,如果不考虑180°的翻转,源和目标各有“一个点,一个倾斜角度”就可以用于定位配准。 图像配准:通常指定一幅图像为参考图像,另一幅图像为待配准图像,配准的目的是通过某种几何变换使待配准图像与参考图像的坐标达到一致。 从算子vector_angle_to_ 阅读全文
posted @ 2019-04-01 17:04 xh6300 阅读(5147) 评论(2) 推荐(0) 编辑
摘要: 仿射变换,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。保守估计80%以上的视觉项目都需要用到仿射变换。 仿射变换是平移、翻转、旋转、缩放、错切这五种变换的组合。 其中最常见的三种为:平移、旋转、缩放。 仿射变换的理解和使用,详情参见我以前写的一篇文章: http: 阅读全文
posted @ 2019-04-01 16:22 xh6300 阅读(2293) 评论(0) 推荐(0) 编辑
摘要: 一、直线和圆拟合概述 直线和圆的拟合,是视觉项目中非常常见的需求,但是对新手来说,在Halcon中实现却比较困难。 其基本思路都是: ① 分割出边缘,得到XLD(gen_contours_skeleton_xld、edges_sub_pix等) ② 将XLD进行分割、筛选(segment_conto 阅读全文
posted @ 2019-04-01 15:47 xh6300 阅读(6519) 评论(1) 推荐(0) 编辑
摘要: 一、阈值分割 阈值分割算子众多: threshold :这是最基本最简单的阈值算子。 binary_threshold :它是自动阈值算子,自动选出暗(dark)的区域,或者自动选出亮(light)的区域,理解起来并没有难度。 dyn_threshold :该算子和dual_threshold和va 阅读全文
posted @ 2019-03-29 23:11 xh6300 阅读(5971) 评论(0) 推荐(0) 编辑
摘要: 问题提出:求下图中楔形缺口到圆心的最短距离。 【涉及知识点讲解】 一、Region特征算子 在图形窗口中用鼠标单击选中某个Region,然后点击菜单栏的“打开特征检测”图标,就可以看到当前Region的所有特征了。 由特征检测页面可知,Region的特征很多,如何知道用什么算子可以获得这些特征呢? 阅读全文
posted @ 2019-03-29 22:43 xh6300 阅读(4591) 评论(0) 推荐(0) 编辑
摘要: 一、图像获取与采集 1、本地图片读取 ① 单张读取 直接传入图片路径即可,可以用绝对路径,也可以用相对路径: read_image (Image, 'C:/Users/Administrator/Desktop/1.png') ② 编号连续的图片读取(000、001、002……) * 分别读取003 阅读全文
posted @ 2019-03-29 21:10 xh6300 阅读(5327) 评论(0) 推荐(0) 编辑
摘要: 1、Halcon是什么?如何初步了解Halcon? 这点我讲得不太好,不如给大家看看三个链接: ① Halcon官方网站:https://www.mvtec.com/products/halcon/ ② Halcon百科介绍:https://baike.baidu.com/item/HALCON%E 阅读全文
posted @ 2019-03-29 17:07 xh6300 阅读(7084) 评论(0) 推荐(0) 编辑
摘要: 一、二维码简介 1 . 类型多样,常见的有QR Code二维码、 Data Matrix二维码等。 2.高密度编码,信息容量大。 3.容错能力强,具有纠错功能:二维码因穿孔、污损等引起局部损坏时,照样可以正确得到识读,损毁面积达50%仍可恢复信息。 4.译码可靠性高:它比普通条码译码错误率百万分之二 阅读全文
posted @ 2019-03-07 20:32 xh6300 阅读(20425) 评论(0) 推荐(0) 编辑
摘要: 一、图像预处理和条码增强 对比度太低:scale_image(或使用外部程序scale_image_range),增强图像的对比度。 图像模糊:emphasize锐化图像,使条码看起来更清晰。 深色背景上读取浅色条码:invert_image反转图像。 二、解码涉及的主要算子 read_image 阅读全文
posted @ 2019-03-06 18:08 xh6300 阅读(10613) 评论(0) 推荐(2) 编辑
摘要: 极坐标想必学过高中数学的人都听过,一般的坐标系中用(x, y)值来描述一个点的位置,而在极坐标系中,则使用到原点的距离ρ和夹角θ来描述该点的位置。 我很早就接触了Photoshop,知道Photoshop里面有个极坐标的扭曲滤镜,如下图: 明白了极坐标(正向、反向)的大致效果是:能将矩形图案变成圆形 阅读全文
posted @ 2019-02-20 15:11 xh6300 阅读(2145) 评论(0) 推荐(0) 编辑
摘要: Halcon可以操作普通文本文件,也可以操作二进制文件。如下图所示,只需要设置“FileType”参数的取值即可明确是操作文本文件还是二进制文件: 下面的程序是操作一个.txt文本文件的完整代码: 第15行close_file 之后,1.txt中内容为: 阅读全文
posted @ 2019-02-14 17:32 xh6300 阅读(9956) 评论(2) 推荐(1) 编辑
摘要: 本文涉及面较广,因此很难在所有方面都讲解得很详细,故适合具有一定Halcon开发经验的人阅读。 1、Halcon二次开发的两种方式 ① 使用C#的语法方式逐句改写Halcon代码 优点:各种变量的类型清楚,可读性强,改写后代码行数几乎不会增加多少。 缺点:改写工作量大,容易出错,如果Halcon代码 阅读全文
posted @ 2019-01-26 11:10 xh6300 阅读(22786) 评论(13) 推荐(8) 编辑
摘要: 其他“数制转换”和“格式化输出”可参考:http://www.ihalcon.com/read-2032-1.html 阅读全文
posted @ 2018-11-27 17:58 xh6300 阅读(8461) 评论(1) 推荐(1) 编辑
摘要: 以Halcon为例,一般解码的步骤为:创建解码模型——设置解码参数——执行解码——清除模型回收内存。如下所示: 我们一般会在“设置解码参数”这个步骤里面做文章。例如设置多个参数,以达到解码成功率高且解码速度快的目的。这个只是常规思路,我今天并不想讲这个,而且这种思路有局限:有时候无论你参数设置得多么 阅读全文
posted @ 2018-10-18 11:58 xh6300 阅读(4417) 评论(0) 推荐(1) 编辑
摘要: 例图: 完整算法: 结果: 步骤分析: ① 图像三角形主要由3根直线构成; ② 阈值化、skeleton提取骨架、将骨架(region)转为xld、将xld打散分割、筛选xld得到3条主xld、将这3条xld拟合成3条直线。 效果分析: 这种算法虽然步骤简单,但是其实鲁棒性并不好。主要风险在“筛选x 阅读全文
posted @ 2018-10-13 10:40 xh6300 阅读(15575) 评论(5) 推荐(1) 编辑
摘要: gen_empty_obj 算子解释: Create an empty object tuple。 其算子签名为: gen_empty_obj( : EmptyObject : : ) 那么有人要问:创建一个空的object有什么用呢? 其实gen_empty_obj 的作用类似于面向对象编程中的“ 阅读全文
posted @ 2018-09-05 17:23 xh6300 阅读(2245) 评论(0) 推荐(0) 编辑
摘要: Json数据解析主要使用开源的类库Newtonsoft.Json来进行解析。 具体参考: https://blog.csdn.net/sajiazaici/article/details/77647625 如果有时候遇到Json数组,即同一种数据结构多次出现,例如: [{"name":"abc"," 阅读全文
posted @ 2018-07-30 15:33 xh6300 阅读(406) 评论(0) 推荐(0) 编辑