自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(121)
  • 收藏
  • 关注

原创 C#使用皮肤(IrisSkin)导致某些 “对话窗口(FolderBrowserDialog)失效” 和 “算数运算导致溢出”的解决办法

1、使用IrisSkin导致对话窗口失效的解决方法: 可使用IrisSkin4或以上版本,将skinEngine的SkinDialogs属性设为false,即:skinEngine1.SkinDialogs = false;此短代码会限制IrisSkin对对话框的渲染。我在遇到这个问题的时候使用的是IrisSkin2,即便使用了该段代码也无济于事,最后换成了IrisSkin4解...

2020-04-25 13:43:41 1805 1

原创 使用PictureBox控件显示halcon图像并使图像适应窗口大小

网上找到此类方法试过之后发现如果图片很大或很小,要么图像超出PictureBox显示范围或小于显示范围,无论是设置PictureBox控件的自适应属性都无济于事(//pictureBox1.BackgroundImageLayout = ImageLayout.Stretch; //pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;...

2020-04-13 21:14:51 4399

原创 区域特征太多不想要怎么办?模板匹配特征太多速度慢怎么办?试试橡皮擦功能!

功能:1、按住鼠标左键拖动鼠标进行擦除工作,松开鼠标停止擦除2、继续按住鼠标左键重复功能1,鼠标右键退出这里使用到的halcon是17.12版本的对应同版本的HDevelop,在API中就找到两个鼠标事件:get_mbutton 和get_mposition前者等待鼠标按下,后者无需等待直接监听鼠标并且都是一次触发一次返回,这样一来实现上面的功能就要挠一挠脑壳了。...

2020-04-01 12:57:34 1787

原创 C#WinForm创建系统加载动画

思路:1、系统执行(加载到内存)后,创建一个Form窗口用来显示动画2、主程序页面初始化前,创建一个线程将添加动画并显示3、主程序页面加载完毕,关闭用来显示动画的Form窗口主要的三段代码:private Form cartoonForm = new Form();//系统加载动画private void SystemLoadCartoon() { ...

2020-03-30 20:12:02 5284 2

原创 halcon算子measure_pos抓不到边?

这里排除参数上的问题,如果measure_pos还是抓不到边那可能是方向上面的错误measure_pos是遵循gen_rectangle2规则的,measure_pos的默认抓边方向也是gen_rectangle2矩形的指向如果说定义measure_pos或矩形角度为反方向,那么所抓到点坐标排列顺序就会反过来(正向)(反向)这样一来,抓不到边的可能性是方向搞错了...

2020-03-20 00:21:49 1119

原创 C#使用委托实现在Form2中调用Form1中的控件

定义一个委托,在Form1中使用该委托声明一个静态委托变量,然后将Form1中某个使用控件的方法赋予给这个委托变量(建议最好是在Form1的构造函数中或者Form1加载事件中给该委托变量赋值,至少在Form2调用该委托之前加载即可),然后就可以在Form2中使用Form1.委托变量() 使用。具体操作截屏:Form1:Form2:效果:...

2020-02-22 00:11:26 3875

原创 C#中的dataGridView控件的使用(滑块跟着新增数据走,从新增行开始显示)

1、设计dataGridView控件的布局提几点常用的,其它布局详查属性列表表头设计:在属性列表中的Columns集合里祛除第一列(多余行):属性列表RowHeadersVisible = false只显示表头(不提前显示用户添加行):AllowToAddRows = false2、新增数据并从新增行开始显示 //新增行 ...

2020-02-21 23:38:51 1002

原创 基于halcon深度学习之公共场合检测是否戴口罩

2月10号从家赶往深圳的公司上班,被告知延长开工日期,很多在深圳的小伙伴也都是临近公司开工日期才得知又要延长的通知,不得不说这次疫情带来的影响非常大。回家的地铁上打开csdnAPP上的推文看到一标题为“用xxx实现检测是否戴口罩”的文章,顿时想法油然而生,我也要实现这么一功能。其实通过视觉软件实现这一功能的方法有很多种。我这里稍微懒一点就使用halcon里面的深度学习框架来实现这一功能。1...

2020-02-12 19:32:00 4622 18

原创 halcon中的深度学习

什么是深度学习?深度学习是一系列机器学习的方法集合,其算法结构类似于多层级的神经网络。通过对大量的训练样本图像的学习,提取其各个层次的特征,使网络具有判别和推理能力。深度学习它的主要工作是什么?如下图,假设黑色圆与白色圆为两种物体,它们在某一 由两种特征建立的二维坐标系上的分布如下。图中的红色曲线就是深度学习算法做的事情(将两种物体尽可能的在特征分布上划分开来),具体的可翻阅文献...

2020-01-11 18:57:45 36041 16

原创 数字图像的图像与采集原理以及彩色图像、灰度图像、二值图像的转换原理

ps:以下演示的所有代码都是在HDevelop编译器上编写图像的数字化现实中的图像是不能通过计算机去处理的,毕竟现实中的图像它没有“new”并产生一个对象到计算机系统里去。要将图像抽象成一个类需要分析图像本身,一只眼睛看景物它会是一个平面,而平面它属于二维的,我们可以把图像描述成一个二维平面。然而这样的图像我们称它为连续图像,它还是达不到计算机处理的要求,计算机处理要求是想图像中每个位置每...

2019-12-09 19:49:20 3653 1

原创 闲得蛋痛系列---在HDevelop中写一个三通道图像的灰度算法

算法公式:Y=0.299*R+0.587*G+0.114*B图:测试代码:*读取图像read_image (Image, 'C:/Users/斌/Desktop/test.png')*获取图像宽高get_image_size (Image, Width, Height)*遍历像素点for i := 0 to Height-1 by 1 for j := 0 ...

2019-12-08 21:09:38 440

原创 无聊的时候写了个颜色识别算法,基于RGB颜色模型

halcon是个好东西,里面有诸多的“轮子”,随着版本的迭代“轮子”会越来越多越来越全面和完善。我用的halcon12里面有一种颜色识别的算法,它这种颜色识别是需要将图像先转换成“HSV”模型,这种模型在后期的使用上还是发现了它的不足(针对一些特殊案例)于是我想既然RGB是三原色,所有的颜色都能按照它们的不同比例合成,何不直接操作RGB三原色的配色值来确定图像中的颜色呢?测试:图:...

2019-12-08 18:36:50 8841 3

原创 来料发生位移旋转的解决方案------一个mark点的定位

在二维平面中,相同的来料都有它关于来料相同的平面矩阵,因此在初始来料上规划好路径后只要得到二次来料它发生的位移以及旋转角度就能很容易得到这次来料上的规划路径关系,从而控制机械手准确走完规划路径。但当来料过大超出相机抓图的视野就可以通过mark点来获得这两个关系,mark点可以是一个、两个或者三个,分别取决于不同的场合。关于一个mark点的定位就非常简单了,但有个局限就是这个mark点必要...

2019-12-02 14:08:16 1105

原创 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 2728

原创 C#ContextMenuStrip控件的后台动态创建

*向ContextMenuStrip中添加菜单节点//Menu控件的属性 private void MenuControl_Attribute() { this.menu.Items.Clear(); this.menu.Items.Add("相机"); this.menu.Items.Add("运...

2019-11-13 00:34:19 988

原创 halcon中旋转矩阵(hom_mat2d_rotate)的使用并解决二维平面旋转问题

首先由一个问题来引出后面的内容:在一个平面中确定两个点坐标,以第一个点坐标为基准图像发生30°旋转后第二个点的坐标位置是多少?从上述问题来看有很多种简单的实现方式,倘若十几二十或者成百上千个点发生旋转后它们的位置呢?halcon中有个非常方便的二维旋转矩阵可以很好的解决这类问题:二维旋转矩阵的创建于使用:dev_set_color ('red')*开辟一个旋转矩阵hom...

2019-11-08 19:35:45 10057

原创 相机软硬触发(相机电源线多出的两根线头是什么?)

有很多人刚接触工业相机时会好奇相机电源线多出的两根线头是什么,不懂的还以为是线断了。其实它是相机触发模式中的一种 --- 外部触发开关。如何打开相机的外部触发?可以在连接相机的软件中找到 AcquisitionTrigger属性目录,将目录下的TriggerSource属性改为Line1 (Software是软触发),然后将TriggerMode设为On。此时原本连续采集的图像不再连...

2019-11-07 16:18:10 8984

原创 基于halcon的AOI自动光学检测

什么是AOI?AOI(Automated Optical Inspection),中文全称:自动光学检测,是基于光学原理来对焊接生产中遇到的常见缺陷进行检测的设备。AOI是新兴起的一种新型测试技术,但发展迅速,很多厂家都推出了AOI测试设备。AOI自动光学检测的作用与优势?大多运用在高速高精度视觉处理技术自动检测PCB板上各种不同贴装错误及焊接缺陷。PCB板的范围可从细间距...

2019-11-06 11:47:57 3888 1

原创 halcon提取区域的拐点、折点

算子:get_region_polygon描述:操作符get_region_polygon计算一个多边形来近似一个区域(region)的边缘。多边形是行(rows)和列坐标(columns)的序列。它描述了区域的轮廓。只返回多边形的基点。参数Tolerance表示多边形与区域边缘之间的最大距离。该区域的空洞被忽略。操作符get_region_polygon以元组的形式返回坐标。...

2019-11-05 21:22:12 10324 2

原创 C#异常:托管调试助手 "RaceOnRCWCleanup":“尝试释放正在使用的 RCW。活动线程或其他线程上正在使用该 RCW。释放正在使用的 RCW 的尝试会导致损坏或数据丢失。”

在关闭窗口调用Dispose方法释放资源时出现异常:托管调试助手 "RaceOnRCWCleanup":“尝试释放正在使用的 RCW。活动线程或其他线程上正在使用该 RCW。释放正在使用的 RCW 的尝试会导致损坏或数据丢失。”异常信息:异常原因 :我遇到这种异常是出现在一些调用外部设备情况下没有正常关闭外部设备就直接结束程序时发生。解决方案:在程序 结束之前正...

2019-11-05 17:26:37 3523

原创 三菱PLC通讯 基于官方项目Sample2010的借鉴二次开发---C#连接三菱PLC进行通讯的方法

环境:打开三菱PLC安装目录下,Act>Samples>Vcs.NET>Sample2010>bin>Debug目录下分别加载以下 dll(全部都加载是为了后续开发需要用到)准备工作:打开官方提供的Sample2010(在Act>Samples>Vcs.NET目录下)将图中两个控件copy到自己的项目中代码: ...

2019-11-05 17:18:49 1235 1

原创 三菱PLC通讯 基于官方项目Sample2010的借鉴二次开发---C#连接三菱PLC进行IO监控

环境:打开三菱PLC安装目录下,Act>Samples>Vcs.NET>Sample2010>bin>Debug目录下分别加载以下 dllWinForm前台设计:(图中的两紫色方块控件是从官方提供的Sample2010(在Act>Samples>Vcs.NET目录下)将这两个控件copy到Form1窗口中即可 )关于三菱PLC的...

2019-11-05 17:18:00 3091 4

原创 C#根据外部文件动态创建或改变控件

跟具外部文件动态创建控件或加载文件的方式提高了代码的复用性减少了冗余代码。以下演示一个自动化设备开发中通过INI文件将IO点位生成Button按钮,通过点击事件控制IO状态。INI文件内容:读取INI文件的类:class INI { /// <summary> /// 获取某个指定节点(Section)中所有...

2019-11-05 16:24:19 557 1

原创 C#实现类似navicat一样操作MySQL数据库的界面(MyBatis逆向工程思路)

在我之前学习到java数据库框架mybatis逆向工程时惊叹了一会儿,想了想这个思路理应早该想到。我们使用navicat工具创建了数据表还要写SQL语句跟表字段一一对应,多么费劲的一件事。SQL语句的增删查改万变不离其宗,变的只是库、表、字段等,也就是说我们动态获取到库、表、字段这些名字后动态插入SQL语句中不就完事了?于是今天呈有空就用C#实现了一个可以获取所有库、表、字段的demo,...

2019-11-03 01:54:48 1599

原创 SQL常用语句,库、表、字段、表数据、约束等操作

库:创建: create database 库名;删除: drop databases 库名;查看: show databases;进入: use 库名;表:创建: create table 表名;查看: show tables;删除: drop table 表名;修改: alter table 旧表名 rename to 新表名;字...

2019-11-03 01:05:31 179

原创 SQL常用增删查改、降序查询、批量删除、数据自减

表数据:插入: insert into 表名 (字段) values(值);修改: update 表名 set 字段1=值1,字段2=值2 where 条件;删除: delete from 表名 where 条件;查询: select * from 表名降序查询:一般用于新增数据的id降序排列,目的是将新增数据查询出来排到第一个SELECT * FROM 表...

2019-11-03 01:01:07 627 3

原创 查询MySQL数据库中的所有库名、表名及字段名并分别合并成一条数据返回

查询MySQL数据库中的所有库合并成一条数据返回:SELECT GROUP_CONCAT(DISTINCT Table_schema) FROM information_schema.`TABLES`查询MySQL数据库中的某个库下的所有数据表合并成一条数据返回:SELECT GROUP_CONCAT(table_name) FROM information_s...

2019-11-03 00:55:07 819

原创 三菱PLC的MX_COMPONENT安装过程

三菱PLC的MX_COMPONENT的压缩包可以到三菱plc官网上下载。解压后打开SANL文件夹首先安装EnvMEL文件夹下的setup.exe ,安装过程全部点击下一步完成然后安装SANL目录下的setup.exe安装过程,注册公司名等(随便填写都行),值得提的是需要输入注册号(到网上搜一大把):安装好后会提示你重启,但是它并不会创建什么快捷键在电脑桌面...

2019-10-31 15:59:58 9985

原创 三菱PLC的配置连接过程

在你的三菱PLC安装目录下打开Act目录下的Utl目录下的ActComm.exe文件,以管理员权限运行,于此同时需要连通电脑与PLC的通讯设备(比如说我这里的PLC是网口通讯,在进行此次过程是需要连接好网线)1、点击Menu选择Wizard..开始配置2、命名逻辑站号,随便命名即可3、选择通讯方式以及plc型号(我这里用的是网线通讯选择Ethernet board)...

2019-10-31 15:58:40 5333

原创 二维坐标标定---vector_to_hom_mat2d 和 affine_trans_point_2d 的作用

vector_to_hom_mat2d:这个算子可以建立一个坐标系到另一个坐标系的变换关系,也就是说关系式一旦成立,一个坐标系上的任意像素坐标都可以在与之有关系的坐标系中进行转换。一般常用在图像坐标与机械坐标的转换,然后就可以通过像素坐标来操控机械手走到指定的位置抓取目标等操作。使用此算子建立两个坐标系关系式时需要分别拿到两坐标系中至少3个不共线的坐标,然后一一对应输入到这个算子中,...

2019-10-25 10:22:26 8739 2

原创 九点自动标定---如何让相机视野中心十字对准目标物?

我们知道图像坐标和机械坐标是相互独立的,需要通过移动9个点(常说的9点标定)的方式建立二者的关系,从而达到通过像素点的坐标关系得到机械坐标。相机的视野中心对准目标物中心这会延申到吸嘴是否准确的抓取到目标,如何达到这一操作见下(假设已经通过9点标定建立关系后,准确说方法1根本就没用到9点标定的关系式,它也不需要进行9点标定)方法1:如下图所示:假设大黑框里面的内容代表相机视...

2019-10-23 10:25:38 5192

原创 一行代码解决C#多线程调用导致窗口及控件假死不刷新状态

在窗体的多线程环境下可能出现某个线程循环或者死循环的情况下,窗体或控件出现假死不刷新状态。大多数这种情况可以使用以下方法解决:Application.DoEvents();示例://某个导致界面假死的循环while (true){ Application.DoEvents();}注解:处理当前在消息队列中的所有 Windows 消息。运行 Windo...

2019-10-19 11:40:53 3020

原创 C#调用C++的Dll出现异常:尝试访问受保护的内存

在遇到这个问题时我搜了很多资料,针对这种异常信息的代码各式各样。也就是说在此这并不是唯一的解决方案,仅供参考,若是跟以下场景相符那就可以试试这种解决方案。场景:使用C#调用固高提供的gts类中的方法:[DllImport("gts.dll")]public static extern short GT_GetCrdPos(short cardNum,short crd,...

2019-10-16 21:56:43 1953 1

原创 使用halcon提供的OpenFramegrabber方法访问各种工业相机

目前业内流行的相机除Basler相机以外都有提供给halcon更兼容的动态链接库,虽然说halcon自带的GigE接口能兼容一般GigE接口的相机但是对于较低版本的halcon来说导出来的外部程序可能无法打开相机,就比如我使用的halcon12版本的导出C#程序后出现无法打开相机切卡死的情况。如果你的halcon版本较高,完全可以使用GigE接口。如果你的halcon版本较低,可以使...

2019-10-12 23:09:46 7207

原创 一个工业相机通用类解决大部分业内流行相机的访问(基于大华相机的动态链接库开发的通用相机类)C#版

其实工业相机里面大部分不同的知名厂家的相机完全可以通过一个共用类来访问,这一点有在使用halcon小助手连接相机上体现。比如说常用的GigE接口的相机几乎都适应于halcon提供的GigE接口类。以下分享一个我使用大华相机动态链接库开发的一个共用相机类。环境:大华相机的dll:共用类:public class CamCommon { #reg...

2019-10-12 20:32:11 3660 4

原创 固高运动卡的使用 <6> 自动回零(限位回零、Home回零、Index回零以及各种混合回零)

理论篇:以下信息来自固高官方文档:代码:ps:以下自动回原点代码仅限于固高运动控制卡型号:GTS-400-PG、GTS-400-PV、GTS-800-PG、GTS-800-PV前台设计:就一个butto按钮直接触发以下代码:代码: //自动回零 private void button2_Click(object sender, EventArgs...

2019-10-05 22:30:08 5601 2

原创 固高运动卡的使用 <5> 插补运动模式之-直线插补运动

理论篇:前面记录的那些运动模式,比如PT、Jog模式都是以单轴进行的独立运动模式。插补运动可以建立X轴Y轴甚至更多轴之间的关系,通常以坐标系关系来建立轴与轴之间的运动关系。直线插补方式中,两点间的插补沿着直线的点群来逼近。首先假设在实际轮廓起始点处沿 x 方 向走一小段(如一个脉冲当量),发现终点在实际轮廓的下方,则下一条线段沿 y 方向走一小段,此 时如果线段终点还在实际轮廓下方,则继续...

2019-10-05 22:10:59 3353

原创 固高运动卡的使用 <4> 运动之PT(点位)运动

理论篇:PT运动是机器轴运动中的一种模式,它具备独立性,可以独立设置某个轴脉冲距离。相比Jog运动,PT运动具有一定目的性,一般跑完一次规划的脉冲段就会停下来。调用 GT_Update 指令启动点位运动以后,控制器根据设定的运动参数自动生成相应的梯形曲线 速度规划,并且在运动过程中可以随时修改目标位置和目标速度。关于参数中的平滑时间:相比Jog运动,PT运动没有平滑系数,但它具有...

2019-10-04 20:03:05 4646 1

原创 固高运动卡的使用 <3> 运动之Jog运动

理论篇:Jog运动是机器运动中的一种运动模式,它具备操作简单、独立性、没有目的性,常常被用于机器的测试和调试。关于Jog运动的变速过程:另外在Jog运动模式下,初始目标速度为 100pulse/ms。动态改变目标速度时,当规划位置超过 100000pulse 时,修改目标速度为 50 pulse/ms关于脉冲与步进电机之间的关系:步进电机脉冲频率与输出转速换算关系...

2019-10-01 16:36:26 4678 1

原创 提供一个C#文本加密的思路

思路:1、创建一个密码集2、将输入的字符匹配密码集进行加密实现:前台:代码:public partial class Form1 : Form { //定义一个密码集 Dictionary<char, string> code = new Dictionary<char, string>(); ...

2019-09-30 16:01:59 854

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除