
上位机
爱炸薯条的小朋友
机械专业的图像算法学生
展开
-
Halcon深度学习,异常值缺陷检测
异常值检测不同于语义分割的项目,异常值检测可以仅训练OK图像,不训练NG图像,但是使用NG图像训练可以显著提高准确度异常值检测通常运用在缺陷检测的项目里面,他的特点是,可以不训练NG图,训练速度快,多特殊缺陷可以快速识别。其次,可以针对图像中的缺陷类型不固定,缺陷区域不固定,物体大小不一等语义分割无法准确识别的缺陷。原创 2024-03-09 16:29:50 · 3249 阅读 · 7 评论 -
上位机模块之序列化与反序列化,二进制序列化
在计算机中,任何数据的本质都是二进制编码的数据,所以我们在使用二进制序列化时可以将任意的数据进行序列化。在halcon中自带的算子提供了许多序列化方式,当然都是针对某些特殊的形式,比如模板匹配的模板文件.shm或者仿射变换矩阵等。由于他们本质上都是二进制的数据,所以在使用.net的序列化时,我们可以将我们的模块文件(Halconhandle)进行序列化保存。在常规的上位机编写中需要用到许多存储数据,存储对象的时候,我们存储数据的过程就是序列化,我们提取数据的过程就是反序列化。原创 2023-11-15 16:46:44 · 529 阅读 · 0 评论 -
上位机模块之halcon绘制ROI与获取ROI,在hsmartwindow实现
1.Halcon自带的.netROI是通过调用HDrawingObject中的算子实现的,获取ROI同样也是,如何去得到延申的其他ROI。在Halcon的帮助文档中,搜索SetDrawingObjectParams并在.net格式中我们可以找到halcon所支持的全部ROI区域的参数,我们根据区域参数去获取即可。在上位机中通常需要使用到绘制ROI模块或者获取已经绘制好的ROI区域的参数,在这里通过使用hsmartwindow窗体控件进行对ROI的绘制和获取。原创 2023-11-15 16:03:08 · 2366 阅读 · 0 评论 -
使用Halcon的HsmartWindows窗体控件显示3D模型
通常我们需要在上位机查看我们采集到的3D图像,但是我们采集的3D图像通常都是深度图或者数据形式,我们在转换成halcon的3D模型后在上位机上直接查看。所以需要单独显示一个类控件。第二:在程序中,由于显示3D模型是一个无限循环的过程,所以需要使用多线程显示,不然会出现程序卡死的情况。第一:在程序代码中,我们第一步需要将显示窗口绑定在我们的控件中,不然窗体上是什么都没有显示的。由于halcon的导出代码量非常大,所以以文件的形式上传。原创 2023-11-15 14:49:07 · 810 阅读 · 0 评论 -
LMI相机配置步骤,使用Gocator2550相机
启动加速器后,IP地址选择电脑主机IP地址,本机端口号,输入除8080外,随后启动加速器。若加速器启动失败,是由于加速器的版本与相机固件包版本不同导致,联系供应商提供对应加速器版本即可。使用浏览器启动IP地址:192.168.1.10随后点击进入即可(未开加速器则直接进入)进入后显示是当前电脑IP地址+加速器端口号。LMI加速器用于将相机cpu与电脑相连,通过共享电脑cpu算力,实现对行频的提高。1.设置移动速度,将频率=Y方向的像素量/(测量距离/移动速度)原创 2023-11-15 14:29:33 · 2645 阅读 · 0 评论 -
相机通用类之LMI激光三角相机(3D),软触发硬触发(飞拍),并输出halcon格式对象
LMI相机的运行逻辑并不难,一个主要是如何配置LMI相机,另一个是如何转换格式图像。代码中提供了3种转换方式,分别有:GenTL格式,带标定数据的halcon类型,不带标定数据的halcon类型。最近完成一个关于LMI激光三角(3D相机)采图的demo,记录并说明用法。如何配置LMI相机后面会再开一份博客进行讲解。原创 2023-11-14 17:53:32 · 2694 阅读 · 10 评论 -
相机通用类之海康相机,软触发硬触发(飞拍),并输出halcon格式对象
如何显示图像:可以访问我文章开头的博客,通过编写相机通用类即可,程序中是有继承通用类,通过访问相机通用的获取图像数据,从而传输图像数据。具体可以查看相机通用类。整体过程其实比较简单,由于海康相机没有像一些品牌相机一样可以直接使用序列号开启相机,所以我们需要通过对相机信息进行索引,根据索引到的相机序列号来开启相机。原创 2023-11-14 17:36:29 · 6135 阅读 · 9 评论 -
上位机模块之通用重写相机类
通用的相机类包含我们需要继承和重写的内容,其中方式有很多种,暂定列举现在常用的通用功能。分为:查找相机,根据相机序列号开启相机,关闭相机,软触发一次,硬触发(飞拍),重连相机,设置参数。在常用的视觉上位机中,我们通常会使用单个上位机匹配多个相机或者多品牌相机,所以在此记录一个可重写的通用相机类,用于后续长期维护开发。如果有新增通用功能在另外编写修改。原创 2023-11-14 17:25:55 · 1326 阅读 · 1 评论 -
上位机模块之TCP数据解析类
上位机通常会与PLC进行数据通讯在通讯时一般使用16进制与ACS2码进行发送,所以工具类中提供4个方法进行解析数据。1.将字符串集合转换为字节数组,集合为数字(十进制)3.将字符串指定区域的转换为ACS2,其他区域为数字。2.将字符串集合转换为字节数组,集合全为字母。使用方法,全部复制粘贴,创建对象即可使用。4.将字节数组的指定区域转换为字符串。对TCP首发数据提供4个方法。原创 2023-03-29 11:54:08 · 503 阅读 · 1 评论 -
C#上位机之NG选点
使用方式,将NG选点窗口复制到项目中,并链接好完成NG选点按钮控件,和picbox控件。通过使用提前将NG原图保存下来,并将路径传入方法中,在从NG选点窗口中创建的CSV进行获取到数据即可。获取数据经过处理,可以直接输出图像上的坐标而不是控件坐标。在定位项目中,经常会在生产的时候出现模板匹配找不到或者匹配错误的情况,在匹配不正确的时候需要快速人工确认方向,所以就需要一个人工选点的功能——NG选点。原创 2023-03-28 16:24:00 · 306 阅读 · 1 评论 -
C#上位机模块之独立窗口进度条
在上位机开启时,由于需要加载大量的控件,类和相关的文件。所以在加载时需要创建一个独立窗口的进度条用于在加载主窗口前预留一定的时间,并使得上位机更加美观。对进度条窗口进行设置,将图标与边框去除。对进度条设置:属性为public共有。第一步:新建一个窗体类。原创 2023-03-27 16:43:21 · 494 阅读 · 0 评论 -
C#上位机模块之窗体控件随着窗体大小等大变换
在实际的上位机中会经常出现例如拖动框体,或者窗体全屏的情况,但是在绘制窗体的时候往往不能达到全屏状态进行书写。并且在工控机中由于成本控制原因,往往选取价格偏移的设备,或者触摸屏的形式,所以在分辨率不同时也需要对控件等比例放大缩小。所以在程序中设定箱体自动变换大小时,控件跟随变换即可。在窗体中设计大小变换函数即可。原创 2023-03-27 16:37:44 · 1385 阅读 · 0 评论 -
C#上位机模块之CSV存储类
在上位机中,经常会出现将数据存储到本地中,所以我写了一个常用的工具类用于直接调用,快速完成对CSV的存储。方法4在文件多的时候会出现运行时间慢的情况。方法1:对项目debug路径下创建以时间为名字的CSV文件,并写入题头与数据。其中输入数据为:路径(string),题头(List),数据(List)方法1和2:在同一时间传入200个数据时耗时为0.99ms。方法2:对绝对路径创建CSV文件,并写入题头与数据。其中方法1与方法2是重载函数,使用时需要注意。方法4:CSV保存时间,删除超出时间的路径。原创 2023-03-27 16:31:03 · 2070 阅读 · 2 评论