Halcon
文章平均质量分 64
Halcon
利白
这个作者很懒,什么都没留下…
展开
-
分享一个OpenCV仿照Halcon的高性能形状模板匹配作品(基于Qt/OpenCV/SIMD指令集优化)
在实际应用中矩形会在行、列方向呈现不同的缩放尺度,圆形也会变成椭圆,所以需要将行方向和列方向的缩放尺度单独求出来,这也是halcon中的find_aniso_shape_model算子,俗称各向异性模板匹配,实现起来也不难,在find_scaled_shape_model的基础上改一下,执行效果如下。参照halcon中的create_shape_model_xld算子,自己写了一个基于几何图形创建模板的函数,目前只支持圆形和矩形,圆形需要指定半径,矩形需要指定长宽。转载 2023-07-03 14:48:03 · 2216 阅读 · 0 评论 -
halcon分别求取Region区域顶点和最高点
Word编辑器可以生成很多形状,举例七角星。原创 2022-08-21 17:15:49 · 2596 阅读 · 1 评论 -
Halcon区域region系列(4)获取区域的特征参数
1、先看程序read_image (Image, 'D:/like/model1_src1.jpg')regiongrowing (Image, Regions, 3, 3, 1, 500)area_center_gray (Regions, Image, Area, Row, Column)cooc_feature_image (Regions, Image, 6, 0, Energy, Correlation, Homogeneity, Contrast)elliptic_axis_gra原创 2022-03-20 16:45:28 · 2115 阅读 · 0 评论 -
Halcon使用算子angle_lx和angle_ll计算角度
1、计算直线与水平轴X之间的夹角angle_lx( : : Row1, Column1, Row2, Column2 : Angle)角度计算方式:将直线看作向量(有方向性),以直线与水平轴的交点为起点(旋转中心)。如果终点在水平轴上方,则夹角为逆时针旋转水平轴到向量的角度(带正号)。如果终点在水平轴下方,则夹角为顺时针旋转水平轴到向量的角度(带负号)。结果取决于定义线条的两点的顺序。角度表示方式:弧度,-π<=Angle<πdev_close_window()dev_open原创 2022-03-06 21:52:27 · 3963 阅读 · 0 评论 -
Qt控件绑定Halcon窗体,设置setMouseTracking(true)后,mouseMoveEvent事件不能实时接收
Qt控件绑定Halcon窗体,设置setMouseTracking(true)后,mouseMoveEvent事件不能实时接收!必须按下按键移动才能接收。原创 2022-01-26 23:39:13 · 1002 阅读 · 3 评论 -
halcon模板匹配实践(8)算子find_shape_model里的参数MaxOverlap含义是什么?
基于形状的模板查找算子:find_shape_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches,MaxOverlap, SubPixel, NumLevels, Greediness : Row, Column, Angle, Score)MaxOverlap:意思是允许的最大重叠区域。那么我们想问,这个重叠区域指的是哪个区域呢?如果下图是创建形状模型的图像:那么对于下图来说,其中的.转载 2022-01-14 11:43:04 · 1783 阅读 · 0 评论 -
Halcon之3d位姿
官方例程:C:\Users\Public\Documents\MVTec\HALCON-18.11-Progress\examples\hdevelop\Applications\Position-Recognition-3D原创 2021-11-28 00:10:58 · 2454 阅读 · 0 评论 -
halcon如何将contour xld显示在图像上?set_grayval算子如何设置三通道图像?
从书面文字的一种理解是:把xld绘制在WindowHandleread_image (Image, 'fabrik')edges_sub_pix (Image, Edges, 'canny', 1, 20, 40)dev_set_line_width (3)dev_set_colored (12)dev_display (Image)dev_display (Edges)从书面文字的另一种理解是:把xld绘制在bmp或者jpg图片上,有以下2种方法:1、使用paint_xld算子原创 2021-11-23 16:31:34 · 6372 阅读 · 0 评论 -
Halcon算子之tuple_gen_const和gen_tuple_const,数组矩阵的生成
tuple_gen_const( : : Length, Const : Newtuple)函数作用:创建一个长度为 Length ,元素为 Const 的元组 Newtuple。生成特定长度的元组及初始化元素,参数Length为新元组的元素个数,如果输入Length是浮点型,只取其整数部分。新元组生成的个数及值是由输入参数Const决定的,Const只由一个元素组成。元组中所有的元素的数据类型和值同于参数Const。参数列表:Length(in):要生成特定元组的长度Const原创 2021-11-17 11:30:09 · 3916 阅读 · 0 评论 -
Halcon各个算子角度计算方式汇总
一、区域(Region)1)elliptic_axis() 计算区域的方向(-π/2<θ<=π/2)这个算子是通过moments_region_2nd()算子,使用图形的Geometric Moments(几何矩)来找到的区域质心和区域方向。水平方向为角度0的方向,区域的方向一般是指长轴与水平方向的夹角(注意:gen_ellipse和elliptic_axis并不是可逆操作,通过gen_ellipse得到的椭圆区域,再用elliptic_axis计算会有误差,不是特别理解)2)ori转载 2021-11-17 00:37:32 · 2570 阅读 · 0 评论 -
halcon网格算子(gen_grid_region)、裁剪算子(clip_region)
Halcon网格算子说明gen_grid_regionclip_regiongen_grid_regiongen_grid_region( : RegionGrid : RowSteps, ColumnSteps, Type, Width, Height : )创建由线(Type=‘lines’)或像素(Type=‘points’)组成的网格RegionGrid,从像素(0,0)到像素(Height-1,Width-1)绘制网格RegionGrid,沿行方向步进RowSteps,沿列方向步进Col转载 2021-11-16 21:25:47 · 1743 阅读 · 0 评论 -
Halcon自标定算子radial_distortion_self_calibration使用出错。HALCON error #3661
1、问题描述*校正径向畸变*halcon提供了一种自标定的算子,它可以在不用标定板的情况下,标定出相机内参(无焦距),相对于多幅标定无法获取相机的外参。*求出了相机内参就可以进行畸变校正,因而自标定相对于多幅标定,在畸变校正方面更快捷,这样设备在现场更容易操作、维护。*参考官方例程*radial_distortion.hdev*radial_distortion_self_calibration.hdev*名字:径向畸变自标定*描述:此算子通过XLD轮廓数据来估算镜头的畸变参数和畸变中原创 2021-11-16 18:03:50 · 3590 阅读 · 3 评论 -
Halcon绘制多边形,带和不带圆角,gen_contour_polygon_xld
gen_contour_polygon_rounded_xldgen_contour_polygon_xlddev_set_color ('green')dev_set_line_width (3)*坐标数组rows1:=[20,100,100,20,20]cols1:=[20,20,250,250,20]radius:=[20,20,20,20,20]rows2:=[20,20,100,100,20]cols2:=[320,550,550,320,320]*带圆角的多边形轮廓g原创 2021-11-15 17:50:46 · 3044 阅读 · 0 评论 -
关于Halcon C++常用的两种数据结构Hobject和HTuple
HALCON里面有很多数据类型,但是通过的导出向导工具导出后,就剩下两种数据类型:Hobject HTuple。一个是图像一个是数据。头文件有定义这两个C++类:C:\Program Files\MVTec\HALCON-18.11-Progress\include\halconcpp\HObject.hC:\Program Files\MVTec\HALCON-18.11-Progress\include\halconcpp\HTuple.hHObject// Represe...原创 2021-11-07 10:20:52 · 5938 阅读 · 0 评论 -
Halcon之select_shape_xld是支持多个参数过滤的
例如:select_shape_xld (Edges, SelectedXLD, ['compactness','contlength'], 'and', [1,30], [5,200])select_shape_xld (Contours, SelectedXLD, ['width', 'height'], 'and', [400, 40], [99999, 99999])* Image Acquisitionlist_files ('C:/Users/Administrator/Desk原创 2021-11-03 00:46:55 · 1716 阅读 · 0 评论 -
Halcon示例之求一个矩形四个角点坐标的八种方法
http://www.ihalcon.com/read-12547.htmlgen_image_const (Image, 'byte', 512, 512)get_domain (Image, Domain)paint_region (Domain, Image, ImageResult1, 100, 'fill')gen_rectangle1 (ROI_0, 204.77, 124.164, 278.986, 347.643)paint_region (ROI_0, ImageResul原创 2021-09-24 17:54:24 · 7791 阅读 · 1 评论 -
使用最小二乘法将xld曲线拟合成直线
halcon已经有算子fit_line_contour_xld当然也可以自己实现: * 先获得xld曲线上的点坐标 get_contour_xld (ObjectSelected2, Row2, Col2) tuple_length (Row2, Length2) create_matrix (Length2, 1, Col2, MatrixID_y2) //y create_matrix (Length2, 2, 1, MatrixID_x2) //x .原创 2021-09-12 12:53:49 · 1104 阅读 · 0 评论 -
Halcon之畸变标定Grid-Rectification
1、官方例程gen_arbitrary_distortion_map.hdevgrid_rectification.hdev2、算子说明connect_grid_points功能:建立矫正网格的矫正点间的连接。create_rectification_grid功能:建立一个附文件,描述矫正网格。find_rectification_grid功能:分割图像中矫正网格区域。gen_arbitrary_distortion_map功能:产生一个投射图,其描述随意扭曲图原创 2021-09-09 17:50:35 · 2178 阅读 · 0 评论 -
常用的图像滤波方法简介-基于HALCON视觉算法包
来源:机器视觉算法与应用在机器视觉中,图像滤波器无处不在。例如,它们用于减少图像噪声,改善对比度或检测边缘。本文将向您介绍MVTec HALCON中一些最常用的滤波器,它们是如何工作的以及可以用于什么。mean_image:均值滤波器首先,我们读取具有背景纹理的示例图像。我们的目标是在不改变实际信息的情况下删除背景纹理。让我们从一个易于理解的通用运算符开始:mean_image。在生成的图像中,背景纹理已被很好地去除,但是很多相关信息已经丢失。那么,此滤波器如何工作?为了调用mean_i转载 2021-08-14 17:15:12 · 3649 阅读 · 1 评论 -
Halcon从某一个图片以指定区域绘制或者拷贝到另一个图像
************************************************************** Halcon从某一个图片以指定区域绘制到另一个图像* Author: LiGuangyu* Date: 2018-02-26* 在Halcon中找了很多次都没找到这种算子,后来自己想出来的一个办法**************************************************************读取图像read_image(Image, '.转载 2021-07-20 10:39:39 · 6353 阅读 · 0 评论 -
Halcon读取图片方法总结--单张读取、有序批量读取、无序批量读取
参考文献:https://mp.weixin.qq.com/s/g53wC_J3yJFfYnu0CdOlvw一、读取单张图片* (1)-Halcon读取图像--读取单张图片read_image(Image, './imgs/1.bmp')二、批量读取图片--有序(命名有序图片)* i取值为1,2,3,图片路径为'./imgs/1.bmp', './imgs/2.bmp', './imgs/3.bmp'for i:=1 to 3 by 1 read_image (Ima原创 2021-07-11 10:39:16 · 2325 阅读 · 0 评论 -
Halcon如何创建或生成空白的,全黑或全白的8位图和24位图
直接上源码:gen_image_const(Image, 'byte', 512, 512)//生成一个图像,用byte格式gen_image_proto(Image, ImageR, 255)//生成第一通道图像gen_image_proto(Image, ImageG, 0)//生成第二通道图像gen_image_proto(Image, ImageB, 0)//生成第三通道图像compose3(ImageR, ImageG, ImageB, MultiImage)//合成三个通道图像s原创 2021-07-05 12:08:30 · 9063 阅读 · 0 评论 -
听听Malcon的原创作者说说Halcon的形状匹配和灰度匹配
Malcon:https://www.cnblogs.com/Malcon/本人用Halcon差不多有10年了,从当时的Halcon8用到现在的Halcon20,大大小小的很多的工业视觉应用场景都经历过,主要有两类:第一类:运动控制类设备,如激光焊接和雕刻,丝印机,贴片机,数控机床等自动化设备,视觉就是模板匹配,先做好Mark点,然后在生产中快速进行形状或者灰度模板匹配,定位产品的位置,最后进行焊接或者贴合的工艺动作。这种设备量产最多,市场同行之间竞争很激烈,基本上是标准机,对模板匹配的速度和精度都有转载 2021-06-28 11:54:40 · 2705 阅读 · 2 评论 -
Halcon找圆系列(6)找多个圆并求圆心间距离
项目来源:http://www.ihalcon.com/read-6805.html*找多个圆并求圆心间距离*http://www.ihalcon.com/read-6805.html*方法1dev_close_window()dev_set_draw ('margin')read_image (Image, 'C:/Users/firecat/Downloads/10_14902_a3c715af0dda9cb.bmp')dev_open_window_fit_image (I原创 2021-06-27 19:16:13 · 1811 阅读 · 0 评论 -
halcon视觉缺陷检测系列(3)表面缺陷检测数据集汇总及其相关项目推荐
以下文章来源于AI算法修炼营,作者SFXiang最近,有许多朋友都在关注缺陷检测领域,今天来看看缺陷检测。目前, 基于机器视觉的表面 缺陷装备已经在各工业领域广泛替代人工肉眼检测,包括3C、汽车、家电、机械制造、半导体及电子、化工、医药、航空航天、轻工等行业。传统的基于机器 视觉的表面缺陷检测方法,往往采用常规图像处理 算法或人工设计特征加分类器方式。一般来说,通常利用被检表面或缺陷的不同性质进行成像方案的设计,合理的成像方案有助于获得光照均匀的图像,并将物体表面缺陷明显的体现出来。近年来,不少基.原创 2021-05-14 11:43:21 · 5840 阅读 · 0 评论 -
QImage/cv::Mat/HObject的图像格式互相转换,4字节对齐
即int step = int((width + 3) / 4) * 4;技术篇——分享相机buffer、HObject、QImage的转换问题。技术篇——分享相机buffer、HObject、QImage的转换问题。用户手动生成一幅4字节倍数宽度的空白图片,再把原图拷贝过来即可解决。8位图,宽度换算成4字节的整数倍,使用公式1。,否则会有宽度4字节对齐的问题。公式1:位宽大于等于8的位图。公式2:位宽小于8的位图。原创 2021-04-15 13:10:46 · 3236 阅读 · 2 评论 -
halcon模板匹配实践(7)set_system(‘border_shape_models‘,‘true‘)
在这种模式下模型的位置是在质量系数函数中插入的,这种模式几乎不花费计算时间,并且能达到足够高的精度,被广泛使用。因此,如果创建模板时,AngleStart=-20°、AngleExtent=40°,在搜索模板函数find_shape_model中设置AngleStart=350°、AngleExtent=20°,尽管角度模360后是重叠的,还是会找不到模板的。Image的domain定义了模型参考点的搜索区域,模型参考点是在create_shape_model中用来创建模型的图像的domain区域的重心。原创 2021-04-07 23:03:00 · 3221 阅读 · 3 评论 -
常见机器视觉软件OpenCV/Halcon/VisionPro/MIL的区别
文章转载自微信公众号《机器视觉课堂》机器视觉处理软件:用来完成输入图像数据的处理,通过一定的运算得出结果,这个输出的结果可能是PASS/FAIL信号、坐标位置、字符串等。常见的机器视觉软件以C/C++图像库,ActiveX控件,图形式编程环境等形式出现,可以是专用功能的(比如仅仅用于LCD检测,BGA检测,模版对准等),也可以是通用目的的(包括定位、测量、条码/字符识别、斑点检测等)。...转载 2021-02-25 23:17:30 · 24543 阅读 · 7 评论 -
使用Halcon库,在Qt界面打开显示图片,可实现多次打开不同图片
在Qt界面打开图片,有两种方式:(1)Halcon读取文件,取出图像的buffer,然后转换成qt的图像格式QImage或者QPixmap,再通过qt的控件显示。(2)Halcon读取文件,获得graphicsView或者QLabel控件句柄,绑定它们,再显示。本篇写第(2)种方法。头文件如下:#ifndef WIDGET_H#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACEnamespace Ui{cl原创 2021-02-21 22:22:50 · 2633 阅读 · 0 评论 -
Halcon拟合系列(5)已知N个离散点,如何拟合成一个圆,得到圆心和半径?
来看源码:Row := [0, 100, 200, 100, 0]Col := [100, 0, 100, 200, 100]Row := [61.098, 62.402, 61.525]//yCol := [154.747, 138.099, 130.394]//x*具体多少个点,圆弧旋转16-20个点完全够了。Row := [24.052,26.729,28.815,30.285,31.124,31.281,30.792,29.659,27.943,25.622]//yCol :=原创 2021-01-06 15:41:18 · 5519 阅读 · 2 评论 -
Halcon不使用标定板如何矫正畸变?
【代码】Halcon不使用标定板如何矫正畸变?原创 2020-12-26 13:58:15 · 1197 阅读 · 1 评论 -
我个人总结的Halcon内存管理心得笔记,关于C#/C++内存释放
Halcon容易造成内存增长或泄露。怎么办?C#1、变量用完之后,Dispose()和置Null。在Halcon18以上版本,Halcon已经提供了Dispose()方法进行释放,那么在低版本中HTuple类型占用的内存怎么释放呢?其实,Halcon中提供一个叫UnPinTuple()的方法,该方法就是官方用来进行释放HTuple的!所以,使用后的变量如不再继续使用的可以用该方法进行清除释放。2、图像尽量不要复制,固定在一个变量进行处理。3、在软件内存占用率高,并且软件闲置的时候,.原创 2020-12-08 17:05:34 · 16556 阅读 · 8 评论 -
Halcon把8位图转换为24位图的方法
halcon源码如下*8位图转24位图*读取8位图read_image (Image, 'D:/org_R1.jpg')get_image_pointer1 (Image, Pointer, Type, Width, Height)*生成24位图gen_image3 (ImageRGB, 'byte', Width, Height, Pointer, Pointer, Pointer)C++源码如下://图像属性HObject ho_Image3;HTuple hv_Poi原创 2020-12-07 15:28:52 · 1101 阅读 · 0 评论 -
Halcon区域region系列(3)生成,使用点坐标
read_image (Image, 'D:/org_R1.jpg')Row := [0, 100, 200, 100]Col := [100, 0, 100, 200]gen_region_polygon_filled (Region1, Row, Col)intensity (Region1, Image, Mean, Deviation)原创 2020-12-06 23:07:09 · 5090 阅读 · 0 评论 -
Halcon找圆系列(5)被噪声干扰到的图,要怎么提取圆的轮廓?
http://www.ihalcon.com/read-15655.htmlhttp://www.ihalcon.com/read-15667.html代码实现read_image (Image, 'C:/Users/firecat/Downloads/9_31914_2177ad9dd9da681.png')decompose3 (Image, Image1, Image2, Image3)median_image (Image1, ImageMedian, 'circle', 3,原创 2020-12-05 14:33:59 · 986 阅读 · 2 评论 -
Halcon标定系列(5):4点标定之眼在手外项目实践,已知仿射变换矩阵,计算得到旋转角度和缩放因子等参数
本人最近做视觉定位项目,使用的halcon四点标定,这里分享一下:*初始化矩阵pxX := gen_tuple_const(4, 0)pxY := gen_tuple_const(4, 0)mmX := gen_tuple_const(4, 0)mmY := gen_tuple_const(4, 0)*像素坐标pxX:=[2609, 2529, 677, 568]pxY:=[368, 2262, 2102, 385]*机械坐标mmX:=[74.53, 76.53, 131.07,原创 2020-11-11 12:28:19 · 6357 阅读 · 6 评论 -
Halcon标定系列(4):一文详解手眼标定之九点法
所谓手眼系统,就是人眼镜看到一个东西的时候要让手去抓取,就需要大脑知道眼镜和手的坐标关系。如果把大脑比作B,把眼睛比作A,把手比作C,如果A和B的关系知道,B和C的关系知道,那么C和A的关系就知道了,也就是手和眼的坐标关系也就知道了。相机知道的是像素坐标,机械手是空间坐标系,所以手眼标定就是得到像素坐标系和空间机械手坐标系的坐标转化关系。在实际控制中,相机检测到目标在图像中的像素位置后,通过标定好的坐标转换矩阵将相机的像素坐标变换到机械手的空间坐标系中,然后根据机械手坐标系计算出各个电机该如何运动,..转载 2020-11-10 11:09:28 · 10802 阅读 · 1 评论 -
Halcon区域region系列(2)遍历,合并,旋转与排序
内容源自:*对目标进行排序*http://www.ihalcon.com/read-15537.html重点关注:union1 (SelectedRegions, RegionUnion) ///区域合并sort_region (RegionAffineTrans, SortedRegions, 'character', 'true', 'row') ///排序完整的源码:*对目标进行排序*http://www.ihalcon.com/read-15537.html..原创 2020-08-22 09:40:27 · 12457 阅读 · 2 评论 -
Halcon通过difference算子实现边界提取
read_image (Image, '27.png')*二值分割binary_threshold (Image, Region, 'max_separability', 'dark', UsedThreshold)*使用腐蚀erosion_circle (Region, RegionErosion, 5)*计算腐蚀前和腐蚀后两个区域的差集difference (Region, RegionErosion, RegionDifference)dev_display (Image)dev_di原创 2020-07-29 09:56:32 · 3958 阅读 · 0 评论 -
Halcon边缘检测和线条检测(4)各种边缘检测算子及10个例子
sobel_amp( Image: EdgeAmplitude: FilterType, Size:)根据图像的一次导数计算图像的边缘close_edges( Edges, EdgeImage: RegionResult: MinAmplitude:)close_edges_length( Edges, Gradient: ClosedEdges: MinAmplitude, MaxGapLength:)使用边缘高度图像关闭边缘间隙。输出的区域包含杯关闭的区域。(感......原创 2020-07-28 22:47:12 · 6610 阅读 · 0 评论