![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Halcon
记录
进击的路飞桑
我在敲代码,别叫我打游戏~
展开
-
C++中Halocn的HObject与HImage互相转换
void HobjectToHimage(const HObjecthobject, HImage& image){ HTuple pointer, type, width, height; GetImagePointer1(hobject, &pointer, &type, &width, &height); image.GenImage1(type, width, height,...原创 2022-02-23 18:56:55 · 2304 阅读 · 0 评论 -
设置Halcon输入算子智能提示及运行时显示内存占用
以Halcon10版本为例,打开Halcon—编辑—参数选择,然后如下图所示:1、设置Halcon输入算子智能提示2、设置运行时显示内存占用原创 2021-04-06 20:25:44 · 922 阅读 · 0 评论 -
Halcon 10在Win10系统下出现行号对不齐的解决方案
https://www.51halcon.com/thread-810-1-1.html转载 2021-03-19 15:03:47 · 347 阅读 · 0 评论 -
获取左上角的坐标点
行列坐标数值:Row:= [943.498, 942.192, 940.972, 935.909, 1894.52, 1892.56, 937.201, 1890.46, 1887.27, 1891.32, 939.853, 1894.56, 938.113, 1888.48]Column:=[361.578, 875.437, 1388.91, 3439.3, 361.006, 875.003, 2926.82, 3439.36, 2926.89, 1388.73, 1901.77, 1901..原创 2021-02-17 11:47:25 · 1513 阅读 · 2 评论 -
OpenCV的Mat和Halcon的HObject类型互相转换
OpenCv的Mat和Halcon的HObject数据类型的互相转换,Halcon的版本是13.0,OpenCV的版本是3.2HObject Mat2HObject(const cv::Mat &image){ HObject Hobj = HObject(); int hgt = image.rows; int wid = image.cols; int i; // CV_8UC3 if (image.type() == CV_8UC3) { vector<c转载 2021-02-14 20:26:16 · 869 阅读 · 0 评论 -
Halocn联合C#编程错误总结一
a:=9/5 //a=1b:=9/5.0 //b=1.8c:=10/5.0 //b=2.0此时用b或c当索引,以下算子会报错select_obj (objects, ObjectSelected, b)解决办法:d:=int(b) //d=1select_obj (objects, ObjectSelectd,d)原创 2021-01-02 14:27:24 · 238 阅读 · 0 评论 -
Halcon中$的使用
https://www.cnblogs.com/xh6300/p/10027998.html转载 2021-01-02 13:32:29 · 2084 阅读 · 0 评论 -
安装DEEP LEARNING TOOL 0.4.3 EARLY ADOPTER
本文记录了如何在MVTec官网下载并安装Halcon深度学习标注工具(无需许可证,免费下载)目录1、打开MVTec官网进入下载区,选择DEEP LEARNING TOOLDOWNLOADS2、选择将要下载的深度学习工具版本,并选择在线安装或离线安装。3、查看Deep Learning Tool帮助文档1、打开MVTec官网进入下载区,选择DEEP LEARNING TOOLDOWNLOADS2、选择将要下载的深度学习工具版本,并选择在线安装或离线安装。在线安装(MVTec..原创 2020-12-11 10:58:06 · 2204 阅读 · 2 评论 -
Halcon内部数据流
版本信息:Halcon18.11文档位置:MVTec\HALCON-18.11-Progress\doc\pdf\extension_package_programmers_manual.pdfHalcon提供了大量的算子用于图像处理,在此基础上我们可以扩展编写新的算子以满足更多需求。(此工作存在一定的难度)Halcon内部数据流缓冲区包含输入数据和输出数据。控制参数直接存储在缓冲区中,图标参数(image、region和xld)存储在数据库中,并由一个图标对象键表示。通过使用这些键翻译 2020-11-28 19:59:30 · 384 阅读 · 0 评论 -
Halcon联合C#编程的三种方式
1、在HDevelop开发平台下编写Halcon程序,然后导出为C#的代码,在VS中调用2、直接在VS中编写Halcon的代码3、利用Halcon引擎HDevEngine,在VS中直接加载并运行Halcon程序原创 2020-11-20 15:33:24 · 1337 阅读 · 0 评论 -
Halcon并行编程
Halcon版本:18.11文档名称:programmers_guide.pdfChapter 2 Parallel Programming and HALCON2.1 Automatic Parallelization2.1.1 Initializing HALCON为了使并行机制最佳地适应实际硬件,HALCON需要检查该硬件一次。之后,HALCON程序将自动并行化,而无需采取任何其他操作。即使现有的HALCON程序也可以运行并并行化,而无需更改。您可以通过调用optimize_.翻译 2020-11-19 17:53:44 · 2269 阅读 · 3 评论 -
Halcon set_system算子解析
并行化信息:请注意,这些参数中的一些是以独占方式设置的,这意味着它们会阻止其他线程,直到没有其他操作符访问HALCON库。 1. 以*)标记的参数:全局有效,且排外2. 无*)标记且不以tsp_为前缀:全局有效,且非排外。即不会阻塞其它调用操作3. tsp_前缀: 1). 无tsp_前缀,对当前线程以及在该操作之后启动的线程均有效,但在调用之前启动的线程无效 2). 有tsp_前缀,仅对当前线程有效。其它已经运行的线程不受影响Graphi...翻译 2020-11-15 11:31:58 · 7991 阅读 · 4 评论 -
Halcon联合C#编程之内存管理
.NET Framework的运行时环境CLR(公共语言运行时)有一种称为垃圾回收器的机制,CLR使用该机制从内存中删除不再需要的.NET对象。在导出的C#代码中,每个图标对象都由一个HObject对象表示。从垃圾回收器的角度来看,HObject对象相当小。因此,虽然潜在的图标对象(例如图像)实际上可能占用了很大一部分内存,但它可能不是从内存中收集的。为了避免这种效果导致内存泄漏,在导出的代码中,每个图标对象在分配新值之前都被显式删除。以下方式只是声明了一个HImage类的变量,该变量尚未引...翻译 2020-11-12 16:33:24 · 1942 阅读 · 0 评论 -
Halcon简介之installation_guide
版本信息:Halcon18.11文档位置:MVTec\HALCON-18.11-Progress\doc\pdf\manuals目录Halcon版本描述VS中使用Halcon插件查看变量信息Halcon版本描述1、HALCON Progress Edition (每半年更新一个版本,大多数人使用的版本)2、HALCON Steady Edition (两年更新一个版本)1)Development version (1) HALCON Steady...翻译 2020-11-12 16:34:41 · 1416 阅读 · 0 评论 -
Halcon中vector数据类型的使用
vector具体的使用方式可以查看Halcon自带的vector_variables.hdev例程,这里我们主要介绍一下如何使用vector来简化函数的传参,达到c#中list等容器的效果。举例如下:当我们有一个总的检测函数Inspect,该函数内部包含断路、短路、区域丢失、腐蚀残留、凸起缺损共五种缺陷检测函数,我们需要将所有种类的缺陷坐标传递出来,此时Inspect函数大致为如下形式:Inspect(image,openRowCenter, openColCenter,shortRowCente原创 2020-08-17 09:42:59 · 2124 阅读 · 0 评论 -
二维几何变换
图像的几何变换主要包含:刚性变换(rigidity)、相似变换(similarity)、仿射变换(affine)、投影变换(projective)、透视变换。这里我们主要介绍二维坐标系下的三种几何变换:刚性变换、相似变换、仿射变换,三者之间的关系如下图所示:一、刚性变换刚性变换的最重要特点就是变换前后目标 任意两点间距离不变,包含平移、旋转、翻转(镜像)三种。1、平移Halcon中向齐次变换矩阵添加平移分量的算子有以下两个:(1)相对于全局(即固定)坐标系执行平移hom_mat2原创 2020-07-18 22:40:04 · 3212 阅读 · 0 评论 -
Halcon运算速度优化方法简述
get_operator_info.hdev:可以查看支持多线程的算子;compute_devices.hdev:这个例子展示了如何在HALCON中使用计算设备。simulate_aop.hdev:aop仿真,数据并行化par_start.hdev:任务并行化对于并行编程,Halcon提供了两种方式:(1)数据并行化(2)任务并行化,automatic operator parallelization (AOP)算子自动并行化(Halcon之所以处理速度很快就是因为...翻译 2020-06-03 14:33:57 · 7350 阅读 · 3 评论 -
VS2015+Halcon17+MFC配置(win10系统)
本文转载自陶博士的文档,祝陶博士早日再找到女朋友 前言 VS与Halcon的配置大致可以参考我的另一篇博客https://blog.csdn.net/jgj123321/article/details/94636112,本文则介绍另一种有些许不同的配置方法。试想一下,如果你的工程要放到一个没有安装Halcon的电脑运行,那么以上链接的配置方法就会导致工程崩溃。通过制作Halcon开发包,...转载 2019-07-05 11:27:29 · 2125 阅读 · 0 评论 -
Halcon循环读取某一文件夹下的所有图片
1、按图片路径读取 第一步list_files( : : Directory, Options : Files) *遍历文件夹输入参数: Directory: 目录(文件夹路径) Options : 选项,包含以下几个选项 'files' 指定搜索的格式为文件 'di...原创 2019-07-04 09:46:50 · 11415 阅读 · 2 评论 -
Halcon筛选包含在闭合轮廓内部的xld
背景介绍 在做项目的过程中,经常会遇到这样一种情况:检测一个圆环上的划痕等缺陷时,利用边缘检测等方法得到了很多细小的xld,其中大部分都是干扰,根据判断条件,在圆环内部的就是划痕,在圆环外部的就是干扰(如下图所示)。如何写程序实现呢?图例:代码:***********************************************************该程序...原创 2019-07-04 09:16:04 · 4062 阅读 · 4 评论 -
Halcon寻找一个数组中大于某一个数的所有数值的索引
举例说明:寻找一个数组中大于5的所有数值的索引。Halcon代码:T:=[1,3,5,7,9,15] tuple_div (T, 6, Div)tuple_and (Div, 1, And)tuple_find (And, 1, Indices)结果:Indices=[3,4,5]...原创 2019-07-02 17:46:24 · 6507 阅读 · 0 评论 -
Halcon寻找被包含在其它轮廓中的小轮廓
背景介绍 使用Halcon时经常会遇到一个问题,即选择一个属于其它轮廓子集的小轮廓,如下图中右下角所示的红色轮廓。本文记录一下该问题的解决方法。图例: 生成的轮廓代码:*生成...原创 2019-07-02 17:30:08 · 1281 阅读 · 0 评论 -
Halcon标定板
标定的意义 1、求取镜头畸变系数,矫正镜头畸变。2、得到空间坐标系和图像坐标系的对应关系。 Halcon标定板图例及参数介绍 Halcon标定板的获取 第一种方式:自己制作(标定后的mean error大致为0.4)调用Halcon算子gen_caltab(::XNum,YNum,MarkDist,DiameterRatio,CalTabDescrFile,C...原创 2019-06-26 17:12:34 · 5553 阅读 · 0 评论 -
Halcon联合C++编程错误总结一
VS工程运行过程中弹出了一个错误提示对话框,如下图所示。由于图片中提示的错误不是Halcon的算子,而是对Halcon数组进行操作时,由Halcon内部调用的一个函数。如果工程中用到的Halcon数组较多,又没有try catch错误检测机制,此类错误查 找起来很麻烦。VS2010环境下弹出的错误提示对话框 Halcon12环境下弹出的错误提示对话框 接下来总结一下此类错误原创 2017-11-23 13:32:06 · 1610 阅读 · 0 评论 -
Halcon阈值算子汇总
大家跟我一起谴责这个张美丽,她抄袭了我平时整理的资料发了原创博客。全局阈值threshold(Image : Region : MinGray, MaxGray : )快速阈值,此算子与threshold类似,只是多了一个输入参数MinSize :提取对象的最小尺寸fast_threshold(Image : Region : MinGray, MaxGray, MinSize :...原创 2019-07-18 17:13:24 · 1295 阅读 · 2 评论 -
Halcon+Winform实现图像缩放等功能
初始化窗口 1)图片控件为winform中的PictureBox控件时:需要调用halcon算子OpenWindow来初始化窗口,使winform中的图片窗口转换为适用于halcon的图片窗口。2)图片控件为halcon中的HWindowControl控件时:无需进行窗口转换,可直接按照如下方式调用。WindowID = hWindowControl1.HalconWind...原创 2019-07-19 13:48:19 · 11533 阅读 · 22 评论 -
C#环境下配置Halcon
新建windows窗体应用程序,并添加引用 解决方案管理器—引用—右键,添加引用—浏览—找到halcon12安装目录—bin文件夹—dotnet35文件夹—halcondotnet.dll 添加halcon图像窗口控件 打开winform窗体,然后视图—工具箱(先打开窗体才能显示工具箱)—公共控件—选择项—浏览—halcondotnet.dll 添加命名空间 usi...原创 2019-07-19 14:13:26 · 5946 阅读 · 2 评论 -
Halcon中三种图像数据类型的存储方式
Region像素坐标值的存储方式 根据如下代码生成一个矩形区域,并获取该区域内所有像素的坐标值,根据结果可以看出,Region内像素坐标值是根据行程编码的规则存储的。gen_rectangle1 (ROI_0, 100, 100, 300, 300)get_region_points (ROI_0, Rows, Columns) XLD像素坐标值的存储方式 根据如下代...原创 2019-07-30 15:10:26 · 4515 阅读 · 0 评论 -
Halcon本地程序函数、函数文件及库函数使用详解
以Halcon17版本为例,其对算子的打包方式分为以下三种:本地程序函数,后缀名:.hdev或.dev HDevelop函数文件,后缀名:.hdvp 库函数,后缀名:.hdpl 本地程序函数 将可以实现某一个功能的一系列算子打包成一个函数,其作用域只是当前程序,不可被其它程序使用,该函数称为本地程序函数。当程序过于庞大时,通过将各个功能模块打包成本地函数的方式,可以使算法逻辑更加清...原创 2019-08-05 14:29:22 · 10945 阅读 · 0 评论 -
Halcon中关于角度计算的算子详解
1、计算直线与水平轴之间的夹角 angle_lx( : :Row1,Column1,Row2,Column2:Angle)角度计算方式:将直线看作向量(有方向性),以直线与水平轴的交点为起点(旋转中心)。如果终点在水平轴上方,则夹角为逆时针旋转水平轴到向量的角度(带正号)。如果终点在水平轴下方,则夹角为顺时针旋转水平轴到向量的角度(带负号)。结果取决于定义线条的两点的顺序...原创 2019-08-16 14:27:38 · 18300 阅读 · 0 评论 -
Halcon中已知一条直线计算它的垂线与延长线
生成垂线 gen_image_const (Image, 'byte', 1000, 1000)********************生成一条直线************************Row1:=100Col1:=500Row2:=500Col2:=100gen_region_line (Line, Row1, Col1, Row2, Col2)*计算该直线的...原创 2019-08-16 16:39:18 · 9438 阅读 · 2 评论 -
Halcon如何将一个程序中的函数移植到另一个程序中
试想一种情况:假设我们现在有两个Halcon程序,即A和B。现在我想把B中的一个函数移植到A中,那么我要怎么做呢?难道是把函数中所有算子复制过去,然后再重新封装成函数吗?当然不是!我们只需要复制B程序中的函数,然后直接在A程序中粘贴就可以了。此时会出现以下两种情况:1、如果A程序中存在一个名字相同、参数相同、但是内容不同的函数,那么B程序中的函数会复制失败,A程序中还是调用原有的函数。2、...原创 2019-09-12 18:01:47 · 1435 阅读 · 0 评论 -
读取不同文件夹同一工位的图像
试想一种情况:当一个视觉项目有两个工位时,对于同一个待检测产品就需要成像两次,此时有以下两种保存图像的方式。我比较倾向于第二种方式,因为将同一个产品的所有图像保存到一个文件夹有利于观察产品所有的缺陷。按照工位保存。即:同一个工位的图像保存到一个文件夹里(同一个工位不同产品的图像)。 按照产品保存。即:同一个产品的图像保存到一个文件夹里(同一个产品不同工位的图像)。第二种方式固然好,但是会造...原创 2019-09-20 09:45:37 · 172 阅读 · 0 评论 -
Halcon联合C++编程错误总结二
运行程序后弹出如下错误提示框。 如下图所示,点击“重试”,此时在“调用堆栈”窗口中即可查看出现问题的代码。 创建MFC程序,编译过程中出现警告:某路径下的exe不可访问。此时可重新启动vs软件,如果上述问题仍然存在则重启计算机注意平台工具集和字符集的运用原创 2018-01-24 18:47:20 · 953 阅读 · 0 评论