笔记
mlxg99999
这个作者很懒,什么都没留下…
展开
-
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 · 1880 阅读 · 1 评论 -
halcon14版本更新为halcon20.11调用引擎发生异常解决方法
因学习问题,版本更换为20.11发生引擎无法使用问题,解决方法问题原因:引用的dll版本不对,并且运行环境不同解决方法三步走:1、切换运行环境为642、删除原引用原因:原来版本为14,需要更换为20版本对应dll3、查找新版本dll(注意路径)最后将对应dll添加引用即可。...原创 2021-12-27 13:50:59 · 933 阅读 · 0 评论 -
手眼标定之九点标定,像素坐标与工具坐标系公式转换
(公式加不上,直接上截图)另外在坐标系关系中,一般情况下机器人基坐标系等于世界坐标系。机器人坐标系与世界坐标系关系详解原创 2021-06-04 20:47:05 · 1678 阅读 · 0 评论 -
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 · 1181 阅读 · 0 评论 -
c# 静态方法与动态方法区别
动态方法与静态方法的区别:1、静态方法在返回值类型前需要先加static ;动态方法不用。2、使用方法上的区别:动态方法,在声明方法的类外使用时需要先创建实例,才能调用实例中的动态方法;而静态方法则不需要先实例类,直接使用即可(在项目的另一个类中直接写包含所要使用的静态方法的名,然后用“.”点出来即可)。示例代码如下:静态方法不需要实例化类就能调用class ClassA { public static string MethodA() {原创 2021-05-27 21:23:36 · 2604 阅读 · 0 评论 -
c#结构与枚举
结构:1、结构声明语法:[访问修饰符] struct 结构名{结构体}2、介绍:结构类似于抽象方法,在引用时进行实例,对实例后的对象内的变量或什么进行重新赋值;适用于对某个事物的相关参数大量重复赋值,且需要同时存在的情况时使用,比如需要同时显示150个人的姓名,年龄,住址等信息,程序员需要一个一个的输,代码之多难以想象,要解决一次性声明多个变量就需要用到结构体了(可以声明一个结构,然后每个人对结构进行一次实例,对应的数据填入所对应的实例结构中的参数)。3、实例;(1)声明:在命名空间内原创 2021-05-25 14:43:01 · 170 阅读 · 0 评论 -
c#委托与事件完成方法的传递与参数的传递案例
简单说一下委托的含义委托就是可以将别的类中的方法直接传递到委托所在类中使用的方法,具体操作步骤如下。搭建界面如下:具体操作如下//form1全部代码namespace 委托{ public partial class Form1 : Form { Form2 form2 = new Form2(); public Form1() { InitializeComponent();原创 2021-05-13 15:00:29 · 599 阅读 · 2 评论 -
C#datagridview禁止用户改动列宽、行高、内容
使用DataGridView时,为了防止用户不小心更改了宽高带来的显示的不便与界面的美观,对其进行显示 #region 禁止更改宽高 //--------------------------------- // 禁止用户改变DataGridView的所有列的列宽 DataGridView.AllowUserToResizeColumns = false; //禁止用户改变DataGridView所有行的行高原创 2021-05-13 09:29:27 · 7866 阅读 · 0 评论 -
c#按指定文件夹自动读取所有指定类型文件(按名称排序、按文件夹里文件创建时间排序)
1、给定一个文件夹的路径,然后自动获得该文件夹里的所有指定类型的文件(默认按名称排序)。 string CurDir = System.AppDomain.CurrentDomain.BaseDirectory + @"dxf模板文件\"; //设置当前目录 //初始化指定路径上的类(去尾部后缀)DirectoryInfo di = new DirectoryInfo(CurDir.TrimEnd('\\'));//将文件读取进数组中,默认按名称排序FileInfo[] files = ne原创 2021-04-22 15:18:00 · 1672 阅读 · 0 评论 -
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 · 5197 阅读 · 0 评论 -
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 · 7696 阅读 · 0 评论 -
C#MessageBox弹出消息对话框点击确定按钮 ,然后要执行某个操作
//消息对话框样式多种,具体可另行搜索 DialogResult mesSelection = MessageBox.Show("是否保存标定结果?", "保存提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (mesSelection == DialogResult.OK) { //确认的操作原创 2021-04-14 17:43:57 · 4095 阅读 · 0 评论 -
c#get、set属性传参,以及list列表的传参(list在不同类间的调用)
get、setget:得到,将某个数值输出;set:给,复制,给某个变量赋值;例:某变量参数在一个类或者主窗体获得值,现在需要在另一个类或者窗体里得到并使用这个数值,则可以使用此结构。具体如下://某个类public class HalconClass { //声明要传参的数据类型与名 double _pixelDiameter; //设置get、set方法(取名要与参数有关联) public double pixelDiameter原创 2021-04-13 15:00:30 · 3788 阅读 · 0 评论 -
计量模型学习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 · 244 阅读 · 0 评论 -
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 · 518 阅读 · 0 评论 -
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 · 587 阅读 · 0 评论 -
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 · 1075 阅读 · 5 评论 -
halcon,什么是标定?怎么标定?标定获得了什么?标定能干什么?
以下为个人见解,如有错误,欢迎指出!什么是标定?总说标定标定,那么标定是什么呢?在我看来,标定是在halcon通过一系列的操作,最终获得相机内参与外参的过程!过程!内参(固定数值):相机焦距、像元之类的参数;外参(位姿):相机在空间位置的角度、位置。怎么标定?需要MVS软件,相机,标定板,使用halcon助手进行标定,具体完整步骤可以从bilibili网站学习。具体网址:B站单相机标定网址标定获得了什么?就像上面所说,标定就是为了获得相机内外参数。不同的相机、不同的位置,相机标定的结果不原创 2021-04-06 17:35:28 · 1621 阅读 · 0 评论 -
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 · 4469 阅读 · 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 · 5342 阅读 · 2 评论 -
halcon-计量模型-得指定区域内线段长度
dev_update_off ()read_image (Image, 'C:/Users/连山人/Desktop/kongju1/三孔距离测量简单/pragram/Image_01.bmp')dev_close_window ()dev_open_window_fit_image (Image, 0, 0, 640, 640, WindowHandle)set_display_font (WindowHandle, 16, 'mono', 'true', 'false')dev_set_col.原创 2021-03-22 19:44:01 · 2080 阅读 · 0 评论 -
c#1252. 奇数值单元格的数目
例1输入:m = 2, n = 3, indices = [[0,1],[1,1]]输出:6public int OddCells(int n, int m, int[][] indices){//得到行中每个位置次数和列中每个位置参数,作为0行和0列,其余每个坐标数值,为坐标点数值之和 //记录行的变化情况(一行有n个数据) int[] Row = new int[n]; //记录列的变化情况(一列有m个数据) int[] Col = new int[m];原创 2021-03-22 19:35:41 · 71 阅读 · 0 评论 -
c#1051. 高度检查器(数组克隆、从大到小、从小到大排序方法)
输入:heights = [1,1,4,2,1,3]输出:3解释:当前数组:[1,1,4,2,1,3]目标数组:[1,1,1,2,3,4]在下标 2 处(从 0 开始计数)出现 4 vs 1 ,所以我们必须移动这名学生。在下标 4 处(从 0 开始计数)出现 1 vs 3 ,所以我们必须移动这名学生。在下标 5 处(从 0 开始计数)出现 3 vs 4 ,所以我们必须移动这名学生。public class Solution { public int HeightChecker(i.原创 2021-03-13 20:28:01 · 77 阅读 · 0 评论 -
c#1752. 检查数组是否经排序和轮转得到(检查数组内容跳跃次数)
给你一个数组 nums 。nums 的源数组中,所有元素与 nums 相同,但按非递减顺序排列。示例 1:输入:nums = [3,4,5,1,2]输出:true解释:跳跃一次示例 2:输入:nums = [2,1,3,4]输出:false解释:跳跃多(两)次(1-3,4-2)示例 3:输入:nums = [1,2,3]输出:true解释:跳跃0次示例 4:输入:nums = [1,1,1]输出:true解释:跳跃0次public class Solution {//本题原创 2021-03-13 20:03:06 · 93 阅读 · 0 评论 -
C#1309. 解码字母到整数映射
1309. 解码字母到整数映射给你一个字符串 s,它由数字(‘0’ - ‘9’)和 ‘#’ 组成。我们希望按下述规则将 s 映射为一些小写英文字符:字符(‘a’ - ‘i’)分别用(‘1’ - ‘9’)表示。字符(‘j’ - ‘z’)分别用(‘10#’ - ‘26#’)表示。返回映射之后形成的新字符串。题目数据保证映射始终唯一。示例 1:输入:s = “10#11#12”输出:“jkab”解释:“j” -> “10#” , “k” -> “11#” , “a” -> “1原创 2021-03-13 18:13:34 · 154 阅读 · 0 评论 -
c#中,HTuple控制类型数据如何形成顺序的数组
Halcon数据类型(1)图形数据image(图像),region(区域),xld(轮廓)Hobject:把图像数据封装成类的一种形式,包含hdevelep下的image、region、Xld。(2)控制数据integer(整型),real(实型),string(字符串),tuple(元组),handle(句柄)HTuple,Hlong(整型数据的另一种形式),包含hdevelep下的所有控制数据。使用List完成定义两个list分别储存HTuple与HObject类型数据 List<原创 2021-02-02 17:26:29 · 2483 阅读 · 0 评论 -
c#自动读取指定路径模板文件和图片文件
读取.model文件,输出控制参数(ModelId)//外部出进来字符串路径 public void ReadModel(string fpath) { HOperatorSet.ReadShapeModel(fpath, out ModelId1); }//或者直接给出路径 public void ReadModel() { HOperatorSet.ReadShapeModel("C:\\Users\原创 2021-02-02 17:16:59 · 1119 阅读 · 0 评论 -
VS2015,datagridview删除与筛选中间某行数据内容,接上
选中某行数据 private void btnclearpath_Click(object sender, EventArgs e) { //先删除选中行数据 for (int i = 0; i < dataGridView1.ColumnCount; i++) { dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[原创 2021-02-01 20:22:49 · 274 阅读 · 0 评论 -
VS2015,datagridview内容保存为txt格式文件并读取
//保存路径 private void btnsavepath_Click(object sender, EventArgs e) { //实例化一个保存文件对话框 SaveFileDialog sf = new SaveFileDialog(); //设置文件保存类型 sf.Filter = "txt文件|*.txt"; //如果用户没有输入扩展名,自动追加后缀 sf.AddExtension原创 2021-02-01 20:18:04 · 1487 阅读 · 1 评论 -
Halcon外部函数的创建、加载、与使用
点击链接https://blog.csdn.net/LonelyBHBH/article/details/112793510?spm=1001.2014.3001.5501转载 2021-02-01 20:08:49 · 2417 阅读 · 0 评论 -
VS中toolstrip控件去除下灰线边框
问题:在C#中使用toolstrip时,当RenderMode设置为System时会出现下面有条灰线解决办法:需要重绘一下toolstrip,C#源代码如下: private void toolStrip1_Paint(object sender, PaintEventArgs e) { if ((sender as ToolStrip).RenderMode == ToolStripRenderMode.System) {原创 2021-02-01 20:04:04 · 650 阅读 · 0 评论 -
C#调用Halcon引擎(外部函数)处理Halcon内部程序
注意事项:1.要using HalconDotNet;namespace 引擎模板匹配{ public partial class Form1 : Form { //声明 private HDevEngine MyEngine = new HDevEngine(); private HWindow Window; string ProcedurePath;//外部函数路径 string ProgramPathStr原创 2021-01-22 20:59:46 · 1842 阅读 · 0 评论 -
c#模板保存并读取.mdl文件
有时为了模板使用方便需要对创建的模板保存,并下次使用保存文件 //保存模板 private void btnSaveModel_Click(object sender, EventArgs e) { HTuple filename = null; SaveFileDialog saveFile = new SaveFileDialog(); //保存格式 saveFile.De原创 2021-01-22 20:37:35 · 445 阅读 · 0 评论 -
c#海康重置相机显示图像
改变显示之后,想重新打开相机,需要将参数重新导入,imgMaxSize获得参考上一篇。 public void returnroi() { int nRet = MyCamera.MV_OK; //获取相机采图的最大尺寸 ImageSize imgMaxSize = GetMaxSize(); nRet = m_pMyCamera.MV_CC_SetIntValue_NET("O原创 2021-01-18 20:34:49 · 486 阅读 · 0 评论 -
c#获得海康相机最大宽高
有时候在使用相机时,必须获得相机参数,下面是获得相机图像尺寸的方法 private ImageSize GetMaxSize() { ImageSize imgMaxSize = new ImageSize(); int nRet = MyCamera.MV_OK; MyCamera.MVCC_INTVALUE stParam = new MyCamera.MVCC_INTVALUE(); //原创 2021-01-18 20:28:58 · 575 阅读 · 0 评论 -
c#删除链表节点和删除倒数某个节点
//输出链表倒数节点值,快慢指针法。 public int KthToLast(ListNode head, int k) { ListNode slow = head; ListNode fast = head; //q指针要比p指针领先k步,这样当q到达链表末端(NULL)时,p指向倒数第k个节点 while (k > 0) { fast = fast.next;原创 2021-01-18 20:24:48 · 498 阅读 · 0 评论 -
halcon缺陷检测学习5孔洞缺陷inspect_blister_photometric_stereo
*光度立体技术检查药物背面的水泡是否破损。**思路为:1.读入多张从不同角度拍摄的药片包装的背面图像2.应用光度立体法得到反照率图像和表面梯度图像3.使用之前得到的表面梯度,计算表面的高斯曲率,得到高斯曲率图像4. 对高斯曲率图像进行预处理和Blob分析,从而得到缺陷区域5. 在图像中标记缺陷区域初始化dev_close_window ()dev_update_off ()dev_open_window (0, 0, 512, 512, ‘black原创 2020-12-22 20:10:18 · 1031 阅读 · 0 评论 -
halcon缺陷检测学习4划痕缺陷find_scratches_bandpass_fft
**这个程序说明如何在一个不均匀的照明表面通过滤波在频域检测缺陷(划痕)。*首先,创建一个合适的带通滤波器。*然后对输入图像进行傅里叶变换,在频域进行滤波,增强高频信息。*最后将其转换回空间域,对增强后的缺陷进行形态学后处理。**dev_update_off ()dev_close_window ()*‘surface_scratch’read_image (Image, ‘C:/Users/连山人/Desktop/que/que01’)invert_image (Image, Imag原创 2020-12-22 20:09:08 · 968 阅读 · 2 评论 -
halcon缺陷检测学习2图像色差缺陷检测detect_mura_defects_blur
简介:检测暗色图像中的色差故障,展示了如何检测模糊图像中的不均匀色差缺陷,选择缺陷·为·黑色部分初始化dev_close_window ()dev_update_off ()*这一句包含如下三个算子:*dev_updata_pc(‘off’)关闭更新程序计数器*dev_updata_var(‘off’)关闭更新变量窗口*dev_updata_window(‘off’) 关闭更新图像窗口Path := ‘lcd/mura_defects_blur_’*path道路,定义图片所在路径..原创 2020-12-22 20:05:54 · 2364 阅读 · 0 评论 -
图像处理 var_threshold与binary_threshold
binary_threshold(二进制阈值)函数功能:自动全局阈值分割,主要对灰度直方图存在两个波峰图像的自动阈值分割。使用二进制阈值分割图像,设定阈值,根据像素大小将图像分为黑白两部分,根据LightDark需要提取其中一种,对同质照明的背景下字符的分割很有用。函数原型: binary_threshold(Image : Region : Method, LightDark : UsedThreshold)参数Image:需要进行阈值的图像;Region:处理后的区域;Method:分割方原创 2020-11-18 16:55:07 · 3029 阅读 · 0 评论