- 博客(79)
- 收藏
- 关注
原创 halcon模板匹配结果row,column是否是质心坐标/将形状模板在模板创建位置显示/获取创建模板时工件位置坐标/将匹配的模板二维变换到实际位置/
一、读入一张图片二、故意设置偏心的ROI(模板)区域,由左上角轮廓图可知,创建时是将ROI区域的中心移动至原点,此时圆心处为*此时圆心为形状模板的质心位置,而非区域模板的中心位置area_center_xld (ModelContours, Area, Row1, Column1, PointOrder)gen_circle (Circle1, Row1, Column1, 3)dev_display (Circle1)三、将创建的模板移动至模板创建位置处显示(原点处轮廓可以消除,此处没消
2022-05-12 17:27:35
1840
1
原创 ABB机器人与c#程序socket通信连接不上解决方法
情况:c#与调试助手正常通讯,通讯助手与机器人正常通讯,c#与·机器人不能正常通信。解决方法:一般只有两个情况。1、在计算机——设置——网络和Internet——状态——网络和共享中心——更改适配器设置——以太网(与机器人网络通讯口拔出插进确定哪个口)——设置——找到ip协议4——设为自动获得ip地址2、防火墙设置一般直接将防火墙关闭,是错误的表层做法,有时可以解决问题,有时无法解决问题。深层做法:打开防火墙——允许应用通过防火墙——浏览你需要用到的程序或插件——修改选择(后面两个小勾都可以
2022-05-09 20:17:46
2748
1
原创 使用halcon助手进行单相机标定,发生结果焦距总不准确问题的解决方法
问题:在使用halcon标定助手进行单相机标定,多次标定的标定结果产生焦距误差较大且不稳定的问题,进而影响后续相机进行测量使用的问题解决方法:1、根据镜头视野大小选择合适大小的标定板,要保证进行标定的标定板大小占据视野的1/4-1/3,太小则不准确(halcon可以使用的标定板有 一是阵列标定板(玻璃材质),二是蜂窝标定板)2、进行标定时的图片绝对不能只使用同一水平面的图片,可以在能完成聚焦的前提下,在标定板下垫一些东西使某个角落抬高,然后旋转,获得各水平、角度图片。3、所有特征点应该全部落在图像范
2022-03-09 15:03:01
2311
2
原创 c#创建计时器,用来记录程序运行时间
2、//创建计时器,用来记录程序运行时间Stopwatch sw=new stopwatch();sw.start();想计时的程序段sw.stop();//显示计时器时间. Elapsed:消逝Console.writeline(sw.elapsed);有地方未区分大小写,自己打一遍就可以了。...
2021-12-29 17:46:50
637
原创 c#字符串方法总结(大小写转换、分割、替换、截取、开头结尾判断数组、查找字符位置、去掉空格、判断空或null、字符串组转化成字符串)
111:字符串的方法1、字符串类型可以看作是char类型的只读数组。String转换为char数组,然后更值Char[] chs=s.tochararry();Chs[0]=’b’;Char数组再转换为字符串:string s=new string(chs);2、//创建计时器,用来记录程序运行时间Stopwatch sw=new stopwatch();sw.start();想计时的程序段sw.stop();//显示计时器时间. Elapsed:消逝Console.writeli
2021-12-29 17:45:04
2106
原创 halcon14版本更新为halcon20.11调用引擎发生异常解决方法
因学习问题,版本更换为20.11发生引擎无法使用问题,解决方法问题原因:引用的dll版本不对,并且运行环境不同解决方法三步走:1、切换运行环境为642、删除原引用原因:原来版本为14,需要更换为20版本对应dll3、查找新版本dll(注意路径)最后将对应dll添加引用即可。...
2021-12-27 13:50:59
917
原创 halcon深度学习4:深度学习在 OCR的用法-deep_ocr_workflow解析
1. 什么是OCR技术OCR,全称是Optical Character Recognition, 即光学字符识别,面向扫描文件。但是由于现在数字图像的普及,这里泛指文字检测和识别,包括扫描文档和自然场景的文字识别。
2021-08-10 18:42:54
8558
12
原创 c#设计模式5——创建型模式_原型模式
浅克隆using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace _1.创建者模式_原型模式//浅克隆{ //用一个已经创建的实例作为原型,通过对原型对象复制,产生一个和原型相同或相似的新对象。 //关注的是大量相同或相似对象的创建问题。 //1、抽象原型类(Prototype):声明一个
2021-08-03 20:04:30
110
转载 c#设计模式4——创建型模式_单例模式
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace _1.创建者模式_单例模式{ //改为public,代表全局访问类 public class Singleton2 { //饿汉模式 //饿汉模式,很饿很着急,所以类加载时即创建实例对象 //
2021-08-03 20:01:30
105
转载 c#设计模式3——创建型模式_构建者(创建者)模式
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace _1.创建者模式_建造者模式{ //将一个对象的构建与表示分离,使同样的构建过程可以创建不同的表示。//分离部件的构造(Builder负责)与装配(Director)//优点://1、易于解耦,将产品本身与产品创建过程进行解耦,可以使用相同的创
2021-08-03 19:58:02
180
转载 bp神经网络
1、概述BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科研小组提出,参见他们发表在Nature上的论文 Learning representations by back-propagating errors 。BP神经网络是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的 输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断 调整
2021-08-03 19:54:24
639
原创 c#设计模式2——创建型模式_工厂方法模式
1、抽象工厂模式(Abstract Factory Pattern):是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。2、优点:一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象(将一个系列的产品统一一起创建);缺点:产品族扩展非常困难,要增加一个系列的某一产品,既要修改工厂抽象类里加代码,又修改具体的实现类里面加代码;增加了系统的抽象性和理解难度;3、适用场景:一系列相关产
2021-08-03 19:40:33
177
原创 c#设计模式15——行为型模式_解释器模式
using System;using System.Collections;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace _3.行为型模式_解释器模式{ #region //定义:定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”是指使用规定格式和语法的代码。 //角色:
2021-07-27 19:56:19
98
原创 c#设计模式
定义在软件工程领域,设计模式是一套通用的可复用的解决方案,用来解决在软件设计过程中产生的通用问题。它不是一个可以直接转换成源代码的设计,只是一套在软件系统设计过程中程序员应该遵循的最佳实践准则。从定义可以看出,设计模式是一套语言无关的最佳设计实践准则,我们这里主要介绍GOF的面向对象的23种设计模式。分类设计模式按照其要解决的问题一般被分为3类:一、创建型(creational)顾名思义,主要解决如何灵活创建对象或者类的问题,共5个。1、抽象工厂模式(Abstract Factory)2、工
2021-07-27 18:57:31
174
原创 halcon了解 ——计算机视觉技术是什么?原理是什么?能干什么?
计算机视觉技术(computer version)计算机视觉是人工智能的一个重要分支,它要解决的问题就是:看懂图像里的内容。人的大脑皮层, 有差不多70% 都是在处理视觉信息。 是人类获取信息最主要的渠道,没有之一。下图是网络上新增数据的占比趋势图。灰色是结构化数据,蓝色是非结构化数据(大部分都是图像和视频)。可以很明显的发现,图片和视频正在以指数级的速度在增长。而在计算机视觉出现之前,图像对于计算机来说是黑盒的状态。一张图片对于机器只是一个文件。机器并不知道图片里的内容到底是什么,只知道这张图片
2021-07-14 15:44:52
1676
转载 人工智能、机器学习和深度学习的概念及关系
上一篇笔记介绍了三者关系、可能不太清晰,在这里引用博主的说明,再来一遍。1、人工智能、机器学习和深度学习的概念及关系人工智能、机器学习和深度学习的概念在近些年十分火热,但很多从业者也难以说清它们之间的关系,外行人更是雾里看花。学习深度学习,需要先从三个概念的正本清源开始。三者覆盖的技术范畴是逐层递减的,人工智能是最宽泛的概念,机器学习则是实现人工智能的一种方式,也是目前较有效的方式。深度学习是机器学习算法中最热的一个分支,在近些年取得了显著的进展,并代替了多数传统机器学习算法。所以,三者的关系可用下图
2021-07-14 15:24:46
597
原创 halcon深度学习2:深度学习算子初认识
1、深度学习import_model_from_dlt.hdev介绍:使用从深度学习工具导出的经过训练的基于深度学习的模型2、深度学习(分类)从上至下:1:介绍:根据需要,对数据进行预处理,训练一个基于深度学习的模型来分类缺陷;2:介绍:训练基于深度学习的药丸缺陷分类模型;3:介绍:评估一种训练有素的基于深度学习的药丸缺陷分类模型;4:介绍:利用训练好的基于深度学习的模型对药丸缺陷进行分类;dl_workflow:介绍:使用深度学习对水果进行分类(最小工作流示例);prune_wor
2021-07-06 19:35:55
1066
3
原创 Halcon20.11深度学习版安装教程补充
注意事项1、halcon版本可以共存,在第一部分安装开始就有英文的选项,注意不想卸载原版本时,注意不要点中是。2、四个exe安装顺序为:windows.exe→runtime.exe→deep-learning-core.exe→deep-learning-data.exe3、windows.exe有安装步骤,并且安装步骤对另外三个安装过程有参考之处,建议较为仔细看下。runtime.exe第一个安装选择时,上下两个选项我都勾了,第二个安装选择时,参考windows.exe安装步骤,勾选了第一个选项
2021-07-01 20:20:26
4557
4
原创 手眼标定之九点标定,像素坐标与工具坐标系公式转换
(公式加不上,直接上截图)另外在坐标系关系中,一般情况下机器人基坐标系等于世界坐标系。机器人坐标系与世界坐标系关系详解
2021-06-04 20:47:05
1632
原创 halcon区域转图像用于create_shape_model创建模板
在对图像进行处理时,有时需要用到二值化处理,但经过阈值分割后的图像为区域类型。此时不可直接使用create_shape_model创建模板,需要转为Image。第一种,使用自带算子。Halcon中有三个区域转图像算子:region_to_bin、region_to_label、region_to_mean.region_to_bin(Region,BinImage,ForegroundGray,BackgroundGray,Width,Height)它将一个区域转化成一个二进制字节图像。给区域内的所
2021-05-31 11:13:51
1170
原创 c# 静态方法与动态方法区别
动态方法与静态方法的区别:1、静态方法在返回值类型前需要先加static ;动态方法不用。2、使用方法上的区别:动态方法,在声明方法的类外使用时需要先创建实例,才能调用实例中的动态方法;而静态方法则不需要先实例类,直接使用即可(在项目的另一个类中直接写包含所要使用的静态方法的名,然后用“.”点出来即可)。示例代码如下:静态方法不需要实例化类就能调用class ClassA { public static string MethodA() {
2021-05-27 21:23:36
2546
原创 c#结构与枚举
结构:1、结构声明语法:[访问修饰符] struct 结构名{结构体}2、介绍:结构类似于抽象方法,在引用时进行实例,对实例后的对象内的变量或什么进行重新赋值;适用于对某个事物的相关参数大量重复赋值,且需要同时存在的情况时使用,比如需要同时显示150个人的姓名,年龄,住址等信息,程序员需要一个一个的输,代码之多难以想象,要解决一次性声明多个变量就需要用到结构体了(可以声明一个结构,然后每个人对结构进行一次实例,对应的数据填入所对应的实例结构中的参数)。3、实例;(1)声明:在命名空间内
2021-05-25 14:43:01
168
原创 c#中datagridview清空数据并删除空白行
针对题目目的,对于读入的数据进行操作如下//读取前先清除内容 for (int i = 0; i < dataGridResult.RowCount - 1; i++) { dataGridResult.Rows.RemoveAt(i); } //中间对dataGrid执行某种操作,可能产生空行 for (int i = 0; i < Scor
2021-05-14 20:55:04
2063
2
原创 c#委托与事件完成方法的传递与参数的传递案例
简单说一下委托的含义委托就是可以将别的类中的方法直接传递到委托所在类中使用的方法,具体操作步骤如下。搭建界面如下:具体操作如下//form1全部代码namespace 委托{ public partial class Form1 : Form { Form2 form2 = new Form2(); public Form1() { InitializeComponent();
2021-05-13 15:00:29
578
2
原创 C#datagridview禁止用户改动列宽、行高、内容
使用DataGridView时,为了防止用户不小心更改了宽高带来的显示的不便与界面的美观,对其进行显示 #region 禁止更改宽高 //--------------------------------- // 禁止用户改变DataGridView的所有列的列宽 DataGridView.AllowUserToResizeColumns = false; //禁止用户改变DataGridView所有行的行高
2021-05-13 09:29:27
7682
原创 c#按指定文件夹自动读取所有指定类型文件(按名称排序、按文件夹里文件创建时间排序)
1、给定一个文件夹的路径,然后自动获得该文件夹里的所有指定类型的文件(默认按名称排序)。 string CurDir = System.AppDomain.CurrentDomain.BaseDirectory + @"dxf模板文件\"; //设置当前目录 //初始化指定路径上的类(去尾部后缀)DirectoryInfo di = new DirectoryInfo(CurDir.TrimEnd('\\'));//将文件读取进数组中,默认按名称排序FileInfo[] files = ne
2021-04-22 15:18:00
1660
原创 C# 消息弹窗MessageBox常用形式
1.最简单的,只显示提示信息。MessageBox.Show(“11”);可以给消息框加上标题。MessageBox.Show(“11!”,“ERROR”);3.询问是否删除时会用到这个if (MessageBox.Show(“Delete this user?”,“Confirm Message”, MessageBoxButtons.OKCancel) == DialogResult.OK){}``4.可以给MessageBox加上一个Icon,.net提供常见的Icon共选择。
2021-04-21 19:04:06
5155
原创 c#判断某按钮click事件是否触发作为条件进行下一步
定义bool类型的全局变量flag将值设为false;然后将button的click事件,添加代码,flag的设为true;然后以flag作为if判断条件。(注意:要将第一个方法设为public类型)部分代码实现: bool b = false; public void btn_Click(object sender, EventArgs e) { b= true; } private void btnF
2021-04-21 18:53:51
7600
原创 halcon多模板匹配,每种模板匹配结果不同颜色轮廓
具体为多个模板依次进行匹配,每个模板匹配时,index索引会发生改变,通过改变index来调用颜色组里不同的颜色,作为轮廓显示时的颜色colors:=['red','green','blue','yellow','orange']dev_set_color (colors[Index])...
2021-04-15 21:09:16
1479
原创 C#MessageBox弹出消息对话框点击确定按钮 ,然后要执行某个操作
//消息对话框样式多种,具体可另行搜索 DialogResult mesSelection = MessageBox.Show("是否保存标定结果?", "保存提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (mesSelection == DialogResult.OK) { //确认的操作
2021-04-14 17:43:57
4058
原创 c#get、set属性传参,以及list列表的传参(list在不同类间的调用)
get、setget:得到,将某个数值输出;set:给,复制,给某个变量赋值;例:某变量参数在一个类或者主窗体获得值,现在需要在另一个类或者窗体里得到并使用这个数值,则可以使用此结构。具体如下://某个类public class HalconClass { //声明要传参的数据类型与名 double _pixelDiameter; //设置get、set方法(取名要与参数有关联) public double pixelDiameter
2021-04-13 15:00:30
3751
原创 计量模型学习4,获得选定的圆的像素坐标和半径,用于设置模板或其他处理
程序做到准确获得画得的原形区域的坐标和半径。步骤:1、运行2、在感兴趣的区域画两个圆框,圆框与要测圆应大致(尽量)重合。3、输出。哈哈,直接上代码:(去个前奏,去个尾巴没多少东西,自己看吧)dev_update_off ()read_image (Image,'C:/Users/连山人/Desktop/标定板图片/Im1.bmp')dev_close_window ()get_image_size (Image,Width, Height)dev_open_window_fit_imag
2021-04-09 08:38:43
235
原创 halcon计量模型学习3 单计量模型测量两圆间距离(轮廓拟合效果较好)
计量模型的优点就是拟合效果好、稳定,圆的数据获得输入与上篇线段间距离有一点差别,但大体相同,实验时仍为第一篇的图片dev_update_off ()*Im1 Image1 Image2read_image (Image,'C:/Users/连山人/Desktop/标定板图片/Image1.bmp')dev_close_window ()get_image_size (Image,Width, Height)dev_open_window_fit_image (Image, 0, 0, Wid
2021-04-08 19:58:03
511
原创 halcon计量模型学习2 单计量模型测量获得线段间距离(轮廓拟合效果较好)
在上一篇基础上改进为一个计量模型上进行线段距离测量。(上篇忘说,使用时在要测得的黑白临界线画两直线即可测得)同一张测试图片,如上篇。代码如下:dev_update_off ()*Im1 Image1 Image2read_image (Image,'C:/Users/连山人/Desktop/标定板图片/Image_01.bmp')dev_close_window ()get_image_size (Image,Width, Height)dev_open_window_fit_imag
2021-04-08 19:53:36
578
原创 halcon计量模型学习1 多计量模型测量线段间距离(轮廓拟合效果较好)
直接上图,和程序,目的为了测量两直线间距离,这里走了点弯路(一个计量模型就可以解决两线段间距离问题,看下一篇)dev_update_off ()read_image (Image,'C:/Users/连山人/Desktop/标定板图片/Im1.bmp')dev_close_window ()get_image_size (Image,Width, Height)dev_open_window_fit_image (Image, 0, 0, Width, Height, WindowHandle)
2021-04-08 19:46:19
1049
5
原创 halcon,什么是标定?怎么标定?标定获得了什么?标定能干什么?
以下为个人见解,如有错误,欢迎指出!什么是标定?总说标定标定,那么标定是什么呢?在我看来,标定是在halcon通过一系列的操作,最终获得相机内参与外参的过程!过程!内参(固定数值):相机焦距、像元之类的参数;外参(位姿):相机在空间位置的角度、位置。怎么标定?需要MVS软件,相机,标定板,使用halcon助手进行标定,具体完整步骤可以从bilibili网站学习。具体网址:B站单相机标定网址标定获得了什么?就像上面所说,标定就是为了获得相机内外参数。不同的相机、不同的位置,相机标定的结果不
2021-04-06 17:35:28
1604
原创 halcon,由标定后相机参数和位姿将像素坐标转为世界坐标方法
已由助手求得相机参数和位姿,并导入*相机参数CameraParameters := [0.00799988,0.875355,8.29871e-006,8.3e-006,639.981,512.001,1280,1024]*相机位姿CameraPose := [-0.00109876,-0.00271076,0.0524751,0.0267799,0.0293399,271.962,0]*算子,用于将此参数、位姿下的相机拍得的照片中的像素坐标转为世界坐标*(参数、位姿、图片像素坐标、转为毫米单位
2021-03-30 20:11:27
4366
3
原创 c#在类的方法中调用主窗体或或某窗体控件
一般情况下,不调整情况下在主窗体新定义的类或者新添加类中都无法调用某窗体的某控件。一、主窗体定义类中方法调用主窗体控件class Form1: Form{ public static Form1 form1; public Form1() { InitializeComponent(); form1 = this;//不添加时,运行可能存在问题 } public class ReadData { public void Me
2021-03-25 09:15:35
5211
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人