
halcon
aaaaabin
越学越渺小,越渺小脾气越大,脾气越大越偏执。。。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用PictureBox控件显示halcon图像并使图像适应窗口大小
网上找到此类方法试过之后发现如果图片很大或很小,要么图像超出PictureBox显示范围或小于显示范围,无论是设置PictureBox控件的自适应属性都无济于事(//pictureBox1.BackgroundImageLayout = ImageLayout.Stretch; //pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;...原创 2020-04-13 21:14:51 · 5282 阅读 · 0 评论 -
区域特征太多不想要怎么办?模板匹配特征太多速度慢怎么办?试试橡皮擦功能!
功能:1、按住鼠标左键拖动鼠标进行擦除工作,松开鼠标停止擦除2、继续按住鼠标左键重复功能1,鼠标右键退出这里使用到的halcon是17.12版本的对应同版本的HDevelop,在API中就找到两个鼠标事件:get_mbutton 和get_mposition前者等待鼠标按下,后者无需等待直接监听鼠标并且都是一次触发一次返回,这样一来实现上面的功能就要挠一挠脑壳了。...原创 2020-04-01 12:57:34 · 2510 阅读 · 0 评论 -
halcon算子measure_pos抓不到边?
这里排除参数上的问题,如果measure_pos还是抓不到边那可能是方向上面的错误measure_pos是遵循gen_rectangle2规则的,measure_pos的默认抓边方向也是gen_rectangle2矩形的指向如果说定义measure_pos或矩形角度为反方向,那么所抓到点坐标排列顺序就会反过来(正向)(反向)这样一来,抓不到边的可能性是方向搞错了...原创 2020-03-20 00:21:49 · 1340 阅读 · 0 评论 -
halcon计算一条弯曲线的回归直线
测试图:测试代码:read_image (Image, 'C:/Users/斌/Desktop/test.png')binary_threshold (Image, Region, 'max_separability', 'dark', UsedThreshold)*转骨架skeleton (Region, Skeleton)*骨架转xldgen_contours_s...原创 2019-12-01 22:02:35 · 3275 阅读 · 0 评论 -
来料发生位移旋转的解决方案------一个mark点的定位
在二维平面中,相同的来料都有它关于来料相同的平面矩阵,因此在初始来料上规划好路径后只要得到二次来料它发生的位移以及旋转角度就能很容易得到这次来料上的规划路径关系,从而控制机械手准确走完规划路径。但当来料过大超出相机抓图的视野就可以通过mark点来获得这两个关系,mark点可以是一个、两个或者三个,分别取决于不同的场合。关于一个mark点的定位就非常简单了,但有个局限就是这个mark点必要...原创 2019-12-02 14:08:16 · 1371 阅读 · 0 评论 -
halcon中旋转矩阵(hom_mat2d_rotate)的使用并解决二维平面旋转问题
首先由一个问题来引出后面的内容:在一个平面中确定两个点坐标,以第一个点坐标为基准图像发生30°旋转后第二个点的坐标位置是多少?从上述问题来看有很多种简单的实现方式,倘若十几二十或者成百上千个点发生旋转后它们的位置呢?halcon中有个非常方便的二维旋转矩阵可以很好的解决这类问题:二维旋转矩阵的创建于使用:dev_set_color ('red')*开辟一个旋转矩阵hom...原创 2019-11-08 19:35:45 · 12108 阅读 · 0 评论 -
基于halcon的AOI自动光学检测
什么是AOI?AOI(Automated Optical Inspection),中文全称:自动光学检测,是基于光学原理来对焊接生产中遇到的常见缺陷进行检测的设备。AOI是新兴起的一种新型测试技术,但发展迅速,很多厂家都推出了AOI测试设备。AOI自动光学检测的作用与优势?大多运用在高速高精度视觉处理技术自动检测PCB板上各种不同贴装错误及焊接缺陷。PCB板的范围可从细间距...原创 2019-11-06 11:47:57 · 4912 阅读 · 1 评论 -
halcon提取区域的拐点、折点
算子:get_region_polygon描述:操作符get_region_polygon计算一个多边形来近似一个区域(region)的边缘。多边形是行(rows)和列坐标(columns)的序列。它描述了区域的轮廓。只返回多边形的基点。参数Tolerance表示多边形与区域边缘之间的最大距离。该区域的空洞被忽略。操作符get_region_polygon以元组的形式返回坐标。...原创 2019-11-05 21:22:12 · 12578 阅读 · 2 评论 -
halcon闭合轮廓线
主要算子:close_contours_xld测试图片:halcon代码:read_image (Image, 'D:/Halcon-WorkSpaces/Test/Image/test24.png')threshold_sub_pix (Image, Border, 128)dev_clear_window ()dev_set_line_width (10)dev_di...原创 2019-07-27 14:15:37 · 6553 阅读 · 0 评论 -
halcon基于共线连接的简单demo(计算图中圈圈数量,基于xld的例子)
测试图片:此demo主要计算给定的图中有多少个椭圆(包括标准圆),思路其实非常的简洁。我们从图中发现这些圈圈呈无规则堆叠状态,不过它们是有一个有利的特征,它们都是圆(椭圆)。于是我们可以想,得到它们的轮廓线,按照一定规律拆解这些链接到一起的不规则轮廓,然后使用共线链接按照一定顶共线规则把这些拆解了的轮廓线给链接起来,最后计算它们的数量即可。halcon代码:*检测图中有多少个圈...原创 2019-07-27 09:19:53 · 1436 阅读 · 0 评论 -
基于模板匹配,将模板映射到目标物上
思路:当模板匹配定位到目标后获取此模板的轮廓,因为轮廓是一个图元对象可以通过仿射变换将其映射到目标物上。演示:创建模板用图:匹配用图:halcon代码:dev_set_line_width (6)read_image (Image, 'D:/Halcon-WorkSpaces/Test/图像匹配,将模板轮廓映射到检测图像/test1.png')threshold_...原创 2019-07-27 10:29:00 · 562 阅读 · 0 评论 -
简单理解高通滤波与低通滤波(频域过滤)
我们知道一幅图像包含错综复杂的高频与低频部分,这使我们在处理这些图像时较为困难,如果我们把图像中我们要的频率留下,不想要的频率干掉,这样在处理过程中会简化很多。高低通滤波原理图:代码演示演示图(因为黑与白是两个极端,在黑与白的交界处波动最大,在频域中差距也就最大):halcon代码演示:read_image (Image, 'C:/Users/斌/Desktop/te...原创 2019-08-06 10:27:17 · 15002 阅读 · 1 评论 -
粘合度高的物体识别
首先看看要使用的图像(这是闲着无聊在halcon网上找的一张实际生产中的图):从图像中看,颗粒状物体都有不同程度的粘连在一起,这给我们在处理上带来了一定的麻烦。首先想,对于这样的图,人是怎么识别的?抽象出来就是:先记住颗粒的形状,再去里面找。因此很明显想到的是图像匹配识别,不过粘连度高的就不好使用特征模板匹配了,因为粘连的物体本身其特征就模糊了很多。这里建议使用ncc模板匹配,至于nc...原创 2019-08-09 09:30:32 · 611 阅读 · 1 评论 -
背景较差的表面污渍检测(局部阈值分割)
在背景较差的表面进行任何一种检测都是非常不理想的。不过话说回来人能分辨出来的东西代码也能,只不过怎么把原理提取出来。今日在网上找到一案例:好图:坏图:要求是检测右边的那些斑点。看似非常简单,立马就产生了思路,写的时候猛的发现这个视觉系统的打光不好,有强暗反射的偏差,以及它的背景影响太大。那么前面说过,人能轻松看出来的东西,代码也能。于是想,人判断某个区域的瑕疵是通过瑕疵所在...原创 2019-08-10 11:30:41 · 4235 阅读 · 2 评论 -
halcon二维码识别(多类型解码+多数量解码)
在之前的一篇二维码识别的文章中有人问到识别多个二维码该怎么做。我看了看以前的那篇原文,有够水的,今天放一篇多类型解码以及解码多个二维码的代码。我直接贴我以前用过已经封装好了的代码吧,也是按以前业务封装的。封装的代码:*输入参数:*coding:='utf8' 编码*path:=图片路径*timeOut:=超时时间*count:=检测数量*输出参数:*EmptyObject...原创 2019-08-15 16:25:13 · 6394 阅读 · 1 评论 -
用halcon写一个俄罗斯方块
记得两个月前闲得没事用halcon写了一个俄罗斯方块玩玩,现在突然翻到了它那就直接贡献出来。关键在于基于仿射变换的区域变换。也就是如下两个算子:vector_angle_to_rigidaffine_trans_region放代码:ps:首先必须得说清楚一件事,在两个月之前为了完成它重构了几次代码也是抱着玩玩的心态没有将最终的代码分拣出来,既然这样我就将最后一次重构的代码发...原创 2019-09-09 22:00:55 · 341 阅读 · 0 评论 -
基于halcon获取移动中的物体的两种方式
方式1:基于移动前和移动后两张图片的相减。原理就是两张图片一某一样的地方会被减没,不同的地方存在会有一点点灰度值的“损耗”,而移动前后的这个物体存在于图像中不同的位置。测试代码:dev_close_window ()dev_open_window (0, 0, 900, 400, 'black', WindowHandle)dev_set_line_width (3)dev_s...原创 2019-09-09 22:15:31 · 2114 阅读 · 0 评论 -
halcon线程等待(延迟程序的执行)
算子:wait_seconds (0.5) *括号内是以秒为单位的时间单位。原创 2019-09-09 22:18:36 · 6149 阅读 · 0 评论 -
halcon二维码识别(完整板)
*计数器_index:=0*读码超时时间_timeOut:=1000*读码类型_codeType:=[]*读码数据_codeData:=[]*已解码的区域gen_empty_obj (_EmptyObject)*系统运行时间_Runtime:=0*系统编码格式_coding:='utf8'dev_close_window ()*设置系统编码set_system...原创 2019-09-15 19:15:46 · 7420 阅读 · 0 评论 -
halcon中的分水岭算法讲解以及作用和实例
分水岭,顾名思义由地貌中的视觉形态演变而来。我们用一种场景来说明,想象一个干涩得裂开的农田赶上下雨,最终淹没到只看得见稻苗。它的整个过程先是灌满地势低的土地裂缝然后慢慢淹没整块土地只剩看得到稻苗。将上面的思想引入到图像区域的分割上,我们就很容易实现一种以“侵泡”式的图像分割,其基本思想是把图像看作测地学上的拓扑地貌,图像中的每一点像素的灰度值表示该点的海拔高度,高灰度值代表山脉,低灰度值代表盆...原创 2019-09-17 14:46:28 · 5486 阅读 · 0 评论 -
halcon字符识别快速入门
注意:如果是争对汉字的识别,请翻阅我另一篇博客:https://blog.youkuaiyun.com/weixin_44490080/article/details/90208492此处仅介绍24个字母以及数字的识别,后面还有一些关键算子的介绍识别用的图片:halcon代码:*自动文本阅读器的快速使用demoread_image (Image, 'D:/Halcon-WorkS...原创 2019-06-19 21:53:33 · 5846 阅读 · 1 评论 -
Halcon测量入门
在机器视觉中,测量是必不可少的一个分支。测量主要包括有物体大小的测量、距离的测量以及物体完整度检测等。在工业机器视觉里面常用的有1D测量和2D测量,两种测量方式都非常简单好用,不过大部分的测量都是要基于标定之后(需要获取环境参数,比如得到pixel的物理大小)不经过标定的测量都只是测量物体的相对大小,以下讲解的都是没有获得相对物理大小的测量方式,原理都一样两者只不过进行单位换算的差别。1D测量...原创 2019-07-31 21:12:12 · 9988 阅读 · 3 评论 -
halcon计算两个区域之间的最小距离以及最小距离的线段
关键算子:distance_rr_min测试图:halcon代码:*计算两个区域的最小距离read_image (Image, 'D:/Halcon-WorkSpaces/Test/Image/test23.png')binary_threshold (Image, Region, 'max_separability', 'dark', UsedThreshold)conn...原创 2019-07-22 16:56:16 · 9897 阅读 · 4 评论 -
扫描法提取感兴趣区域(车牌识别祛铆钉)
对于一些风化严重的车牌,以及铆钉过大,这一类车牌的铆钉与字体连为一体,还有一些甚至变形了的,智能识别起来非常不便。以下演示一个小技巧用于祛除铆钉。演示用图(直奔主题征对性的绘制了一张简陋的图):halcon代码:*扫描法筛选想要的区域read_image (Image, 'D:/Halcon-WorkSpaces/Test/Image/test4.png')rgb1_t...原创 2019-06-21 15:03:06 · 776 阅读 · 0 评论 -
halcon倾斜字体矫正(举一反三)
演示用图(在画图工具上用斜体写的字体,倾斜度不是很大):halcon代码:*倾斜字体矫正read_image (Image, 'D:/Halcon-WorkSpaces/Test/Image/test3.png')*自动检索文本行的斜率,第三个参数为字体拉升长度 >=原字符长度text_line_slant (Image, Image, 140, -rad(45),...原创 2019-06-21 10:20:19 · 3550 阅读 · 1 评论 -
halcon复杂图形中的形状筛选(举一反三)
ps:这里的演示过于简洁,够用,关键算子就是:select_shape,后面附带select_shape的用法讲解演示用图:halcon代码:*复杂图像中的形状筛选*这里以截取图片中的所有矩形为例read_image (Image, 'D:/Halcon-WorkSpaces/Test/Image/test2.png')rgb1_to_gray (Image, GrayIm...原创 2019-06-21 09:31:56 · 9977 阅读 · 1 评论 -
halcon模板匹配快速入门
算子:创建模板:create_aniso_shape_model匹配模板:find_aniso_shape_model例子:测试用的图像:代码:dev_set_draw ('margin')read_image (Image, 'C:/Users/斌/Desktop/temp.png')rgb1_to_gray (Image, GrayImage)*...原创 2019-06-11 10:00:02 · 15708 阅读 · 0 评论 -
halcon功能及应用简介
摘自:《halcon数字图像处理》halcon功能及应用:1、BLOB分析 。blob分析包括标准阈值分割、动态分割以及其它附加的图像分割算子。2、形态学。halcon可以基于任意结构元素进行针对Region和Image的腐蚀、膨胀、开/闭运算。3、图像特征转换为Region/XLD特征。halcon独特的数据结构Region/XLD可以保证图像处理的快速准确。4、图像的运算。...原创 2019-06-20 11:22:51 · 6582 阅读 · 0 评论 -
halcon二维码识别
对于二维码识别并没有过多的解释,halcon封装了这类的算子,拿来即用。halcon代码: read_image (Image, '二维码图片路径。。。') rgb1_to_gray (Image, GrayImage) *创建一个二维码数据class模型 create_data_code_2d_model ('QR Code','default_parameters', 'max...原创 2019-05-14 22:10:25 · 10067 阅读 · 3 评论 -
halcon颜色识别的两种简单方式
颜色识别的两种简单方式:1、单通道方式: 原理:通过不同颜色在灰度图中的阈值范围不同来区分颜色(理论上这种方式不推荐,但在一定情况下适用)材料:halcon代码:dev_close_window ()dev_open_window (0, 0, 800, 600, 'black', WH)read_image (Image, 'C:/User...原创 2019-05-14 16:57:19 · 21332 阅读 · 7 评论 -
halcon图形选定与剪切
怎么说,我也是刚上halcon这条道,跟着老司机学开车,我暂时没能力讲一些高深的东西只能分享一些我做过的halcon的例子。材料: 图片:代码:*读入一张图片read_image (Image, 'C:/Users/斌/Desktop/test/temp.bmp')*灰度处理,仅黑白两色的图片无需灰度处理*rgb1_to_gray(Image,ImageGray...原创 2019-05-10 20:30:52 · 6106 阅读 · 0 评论 -
基于OCR训练的halcon汉字识别
使用halcon做字体识别,基于数字和字母组成的字符halcon自带了这类字符的分类器,我们只需要拿来用即可。对于汉字字符的识别目前我所了解的,halcon似乎并不支持。因此我们需要通过训练OCR使halcon来识别汉字。什么是OCR?(百度百科):OCR(optical character recognition)文字识别是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,然后用...原创 2019-05-14 16:33:33 · 8223 阅读 · 4 评论 -
数字图像平滑技术入门(图像滤波处理、降噪处理)
图像平滑的主要目的是减少噪声(噪声:你就理解成图像中的杂质)。图像中的噪声种类很多,对图像信号幅度和相位的影响十分复杂,有些噪声和图像信号不相关,有些是相关的,噪声之间也可能相关。因此要减少图像的噪声必须争对具体情况采用不同方法。噪声的概括:图像噪声的来源:图像系统中的噪声来自多方面,经常影响图像质量的噪声源主要有以下几类:1、由光和电的基本性质引起的噪声。2、电器的机械运动产生...原创 2019-06-25 21:21:52 · 5649 阅读 · 0 评论 -
图像金字塔的简单理解
图像金字塔模型:Level层定义的是图片的分辨率,图像金字塔的塔底到塔顶表示的是图片的缩小过程。也就是说从第Level0层开始是原图,越往上越压缩,丢失的信息越多。图像金字塔的测试:图片:halcon代码:read_image (Image, 'C:/Users/斌/Desktop/test11.jpg')*创建模板,第二个参数为金字塔层数create_shape...原创 2019-07-02 19:21:06 · 4899 阅读 · 2 评论 -
halcon鼠标事件(鼠标检测)
关键算子:get_mpositionhalcon代码:while (1) try dev_clear_window () get_mposition (3600, mouseR, mouseC, Button) disp_message (3600, '当前鼠标光标位置:'+'('+mouseR+','+mouseC+')', 'w...原创 2019-07-21 11:47:57 · 7766 阅读 · 0 评论 -
halcon提取物料边缘上的点
测试图:halcon代码:read_image (Image, 'D:/Halcon-WorkSpaces/Test/Image/test21.png')dev_set_draw ('margin')get_image_size (Image, Width, Height)R:=200C:=Width/2Phi:=0LengthR:=WidthLengthC:=1...原创 2019-07-19 15:05:49 · 2647 阅读 · 0 评论 -
边界提取(Region的边界提取)
边界提取不是轮廓(XLD)的提取,边界提取基于像素点。可通过腐蚀Region,再拿腐蚀前后的图像计算它们之间的差集即可得到Region的边界。测试图:halcon代码:read_image (Image, 'D:/Halcon-WorkSpaces/Test/Image/test20.png')*二值分割binary_threshold (Image, Region, 'ma...原创 2019-07-19 09:23:27 · 2956 阅读 · 0 评论 -
halcon的图像旋转(区域旋转)
关键算子: orientation_region vector_angle_to_rigid affine_trans_region测试图片:halcon代码:*此例子将图中没有偏移的形状参照旋转的形状进行旋转read_image (Image, 'D:/Halcon-WorkSpaces/Test/...原创 2019-07-12 09:13:53 · 13811 阅读 · 1 评论 -
halcon获取多边形的顶点 , 获取任意形状的角点
关键算子:points_foerstner测试用图:halcon代码:read_image (Image, 'D:/Halcon-WorkSpaces/Test/Image/test12.png')points_foerstner (Image, 1, 2, 3, 200, 0.1, 'gauss', 'false', \RowJunctions, ColumnJunctio...原创 2019-07-12 07:46:22 · 12322 阅读 · 3 评论 -
仿射变换以及数学公式的实现
什么是仿射变换?仿射变换是指在几何中,一个空间向量进行一次线性变换并接上一个平移,变换为另一个向量空间。比如说某一矩形的某一顶点发生平移旋转后的位置。关键算子:vector_angle_to_rigidaffine_trans_point_2d实验与测试:halcon代码:dev_set_draw ('margin')RR1:=50CC1:=100...原创 2019-07-15 11:02:32 · 6101 阅读 · 0 评论