- 博客(104)
- 资源 (18)
- 收藏
- 关注
原创 Halcon——仿射变换
文章目录仿射变换 & 透视变换仿射变换平移缩放翻转旋转斜切仿射变换 & 透视变换仿射变换仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。数学表示如下图。平移将原图每个点移动到(x + tx , y + ty)变换矩阵如下:缩放将每一点的横坐标放大(缩小)至sx倍,纵坐标放大(缩小)至sy倍,变换矩阵为:如果需要将参考点设置在 Px Py 则需要首先将目标移动到 -Px -Py 点进行缩放 在移动回原来位置。
2021-02-20 01:43:31 1737 1
原创 Halcon例程解析——measure_ring
文章目录measure_ring摘要代码解析加载图片提取齿轮区域提取齿轮齿牙位置坐标生成圆环检测句柄,检测边缘对。计算最终结果measure_ring摘要测量图中齿轮的齿牙三种间距(弧长、直线距离、角度距离)代码解析加载图片read_image (Image, 'rings_and_nuts')提取齿轮区域自动二值化提取大致区域。再通过紧密度,提取出齿轮的区域。binary_threshold (Image, Region, 'max_separability', 'dark', U
2021-02-16 13:19:46 1001
原创 Halcon例程解析——measure_caliper.hdev
文章目录Measure_caliper摘要程序解析准备测试图片设置测量句柄计算灰度投影求导处理Measure_caliper摘要使用测量句柄获得灰度投影结果,再对结果进行求导分析。分析长刻度中心所在位置的一阶导数二阶导数特性以及幅度特征。最终实现对长刻度所在位置的定位程序解析准备测试图片ead_image (ImageOrig, 'caliper/caliper_1')rotate_image (ImageOrig, Image, 90, 'constant')get_image_size
2021-02-16 12:56:35 779
原创 Halcon例程详解——组件匹配之 cbm_bin_switch.hdev
文章目录摘要流程拆解例程解析设定组件区域准备训练集训练创建模板可视化模板释放训练模板内存匹配可视化查找结果释放组件模板内存摘要根据已知组件部分训练并创建组件匹配模板,检测目标开关的开关状态。流程拆解绘制组件区域训练训练集,获得位置关系利用训练句柄,创建组件匹配模板使用组件匹配模板查找目标图像中的实例例程解析设定组件区域对于此例程中,开关部位以及开关本身就很适合作为根节点以及子节点。因为这两部分位置关系一定稳定。那么只需要在开关本体上找到一些稳定且简单的特征作为根节点,在选择开关活动模
2021-02-09 22:56:56 584
原创 Halcon例程解析——measure_ic_lead
文章目录摘要套路拆解全部代码摘要测量边缘点(对)的经典应用套路拆解第一个需求如下图所示,需要测量芯片本体末端与管脚末端的距离。乍一看,这根本就不存在真正的边缘么,芯片管腿间隙造成了影响。如何才能测量露出管腿的距离。难不成要一根一根的测量取均值? 其实不然,这个例程正好和一维检测原理相吻合。一维检测原理正是使用一定宽度的边缘沿着设定方向取灰度投影,而图中虽然管腿中不存在真正的边缘,但是由于黑白交替,导致最终生成的灰度投影也会与其他部分形成差异。形成边缘。沿着垂直方向做灰度投影如下图所示,背景
2021-02-02 00:27:57 445
原创 455.分发饼干
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/assign-cookies题目假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值.
2020-12-31 00:17:25 169
原创 Halcon例程解析——fuzzy_measure_switch.hdev
文章目录摘要例程详解模糊简介回到例程代码摘要模糊测量例程详解模糊简介“模糊测量” 里的 “模糊” 是什么意思在数字图像处理冈萨雷斯第三版中灰度变换那一章最后小节就描写了 模糊 这一概念引题: 什么叫做年轻人 我们说 25 岁时年轻人 35岁是中年人 这没问题 那26岁是不是年轻人呢。那34岁是年轻人么 还是说有一个绝对阈值说过了这个阈值一个小时就算中年人,反之则是年轻人? 这就很不合理。这根本就不存在一个绝对阈值 这能模糊的说。这就是模糊的由来解决办法:可以这样解决上述问题 我们认为
2020-12-25 18:52:26 535
原创 Halcon例程解析——count_fish_sticks.hdev
文章目录摘要例程详解代码摘要亚像素思路一维边缘检测灰度投影直方图可视化例程详解首先根据二值化提取出目标所在大致区域 并且声称一维测量矩形测量矩形所得结果经过个数以及间距检查后 作为结果输出对于测量区域灰度投影可视化 则使用 measure_projection算子这届从卡尺句柄中读取结果。在通过create_funct_1d_array 创建函数句柄 利用local_min_max_funct_1d 算子查找出图中极值点 (可以根据设置参数由离散点拟合连续函数计算出亚像素边缘点 )
2020-12-25 18:11:24 407 1
原创 平安夜:切分木棒(2020-12-25)
作者:LeetCode-Solution链接:https://leetcode-cn.com/circle/discuss/QGsghu/来源:力扣(LeetCode)题目Q04 切分木棒假设要把长度为 n 厘米的木棒切分为 1 厘米长的小段,但是 1 根木棒只能由 1 人切分,当木棒被切分为 3 段后,可以同时由 3 个人分别切分木棒。求最多有 m 个人时,最少要切分几次。譬如 n = 8,m= 3 时如图 1 所示,切分 4 次就可以了。提问:当 n = 20, m = 3 时的最少.
2020-12-25 00:34:32 197
原创 387. 字符串中的第一个唯一字符(2020-12-23)
作者:LeetCode-Solution链接:https://leetcode-cn.com/problems/first-unique-character-in-a-string/solution/zi-fu-chuan-zhong-de-di-yi-ge-wei-yi-zi-x9rok/来源:力扣(LeetCode)题目给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = “leetcode”返回 0s = “loveleetcode”.
2020-12-24 00:22:33 197
原创 Halcon案例解析——并行(simulate_aop)
文章目录例程梗概并行算子解析代码解析直接上一张运行截图例程梗概该例程可以分为三个部分第一部分主要体现的是 关闭自动并行后 计算中值滤波所需要的时长。第二部分体现的是 开启自动并行 并且限制最大并行核数量 本机器共有 12 个内核 也就会进行 12 次循环 记录每次中值滤波所消耗的时长。第三部分体现的是 关闭自动并行 自行编写并行代码,以模拟并行效果,同样根据内核数量进行依次测试,最后绘制折线图 对比并行什么是并行呢 就是一种加快CPU计算速度的方法如图 这台机器CPU一共有1
2020-12-23 19:21:06 910
原创 C#——如何使用 已知字符串 调用相关 方法 以及 类
如何使用 已知字符串 调用相关 方法 以及 类GetAndExecuteMethod("VisionTool.VS_TwoCornerLocation", "InitBaseVS_TwoCornerLocation");/// <summary>/// 调用并执行指定类里面的函数/// </summary>/// <param name="className">需要调用的类名(包含其命名空间)</param>/// <param name=
2020-12-23 18:42:11 968
原创 C#——文件\文件夹操作
打开文件夹 OpenFileDialog openFileDialog=new OpenFileDialog(); openFileDialog.InitialDirectory="c:\\";//注意这里写路径时要用c:\\而不是c:\ openFileDialog.Filter="文本文件|*.*|C#文件|*.cs|所有文件|*.*"; openFileDialog.RestoreDirectory=true; openFileDialog.FilterIndex
2020-12-23 18:40:02 156
原创 C#——INI文件操作
查看文件中是否有 RectEdgeDetect 节点List<string> sections = INIOperators.ReadSections(_fileName); if (!sections.Exists(x => x == "RectEdgeDetect")) {// 文件错误 返回 runResult.isOK = false; runResult.run.
2020-12-23 18:19:32 302
原创 C# 中使用多线程调用一个静态函数是否会产生线程安全问题
如题 在开发系统时 多个类需要调用同一个静态方法有可能会同时发生, 静态方法中没有静态变量 那么会不会出现线程安全问题呢如下测试开启 3 个线程 线程睡眠时间逐渐减少 共同调用同一个静态方法 静态方法输出传入得形参并显示 如果出现问题那么输出结果就会乱,多次运行 结果相同 那么认为该情况下不会产生线程安全问题using System;using System.Collections.Generic;using System.Linq;using System.Text;using Syst
2020-12-23 09:45:45 3285
原创 Halcon例程分析——灰度投影(gray_projections)
文章目录一、基本原理二、Halcon中例程gray_projections三、拓展一、基本原理直接上图 灰度投影 顾名思义 也就是一部分区域的投影 如果是水平投影 那就是水平行方向所有灰度值相加再求均值,知道所有行都计算完毕,相同列也是一样。基本理论很简单 如果涉及到所选区域不是对其行列而旋转一定角度。则可以使用插值算法依次计算各个区域的灰度值,再进行该角度方向上的投影。二、Halcon中例程代码如下 该例程是一个只展示灰度投影的例子,没有其他作用。在求得水平方向上的灰度投影后,又通过绘制直
2020-12-07 23:53:24 3379
原创 Halcon案例分析——Hough圆变换(hough_circles)
文章目录算子介绍算子使用详解 及 拓展首先是 **hough_circle_trans** 这个算子 输出结果如下图hough_circlesDemo演示之前写了Hough直线变换 这次就要写Hough圆变换 Halcon中也提供了相关算子 但是 没有配套例程算子是hough_circles还有一个可以查看中间结果的算子hough_circle_trans 。首先介绍一下该算子的每个参数详细介绍各个算子的使用方法以及拓展通过一个小程序来看看效果算子介绍hough_circles(Regi.
2020-11-24 00:28:45 2077
原创 Halcon——绘制直方图
直方图操作read_image (Image, 'fabrik')dev_close_window ()get_image_size (Image, Width, Height)dev_open_window (0, 0, Width, Height, 'black', WindowID)dev_display (Image)dev_set_draw ('margin')dev_set_color ('red')* Create two rectangles parallel to the
2020-11-22 08:42:05 2400
原创 Halcon例程分析——卡尺检测边缘夹角(apply_metrology_model_diamond.hdev)
文章目录卡尺原理卡尺调用步骤例程代码卡尺原理程序运行很炫酷,感觉很高大上 ,仔细看看代码 ,就很慢慢觉得 切 也不过如此。之前也写过一个文章 也是卡尺工具的例程说白了 卡尺不过是利用一些小的边缘检测矩形,逐一检测出边缘点。再通过拟合求出目标轮廓。图中黄色栅格就是一个个边缘检测小矩形。在 add_metrology_object_line_measure 算子中 通过 MeasureLength1 、MeasureLength2 设置其大小。圆形检测等同理在这个图中就可以很好看出卡.
2020-11-21 23:08:22 1430
原创 Halcon案例分析——霍夫直线(hough_lines.hdev)
文章目录@[TOC]例程代码步骤霍夫找直线原理参数例程代码* Detect lines in an image with the help of the Hough transform* and return it in HNF* read_image (Image, 'fabrik')rectangle1_domain (Image, ImageReduced, 230, 180, 330, 280)* Detect edges (amplitude) using the Sobel ope
2020-11-19 23:59:05 1290
转载 图像处理——霍夫变换(圆 & 直线)
原文链接:https://blog.csdn.net/shenziheng1/article/details/75307410 1.前言 霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果。霍夫变换于1962年由Paul Hough 首次提.
2020-11-19 23:21:04 826
原创 Halcon——添加外部算子
首先将下载好的 hdpl 文件 放在一个路径下 例如 算子标准库(记下这个路径)C:\Program Files\MVTec\HALCON-12.0\procedures\general然后 打开 halcon 点击 上方工具栏中的【函数】-> 【管理函数】->【函数】->【目录】->【添加库】 选择 刚才的路径 下的 hdpl 文件即可在最后一步选择 【添加 】而不是选择 【添加库】则会选择文件夹 添加 。添加成功后 会出现如下列表 如下图我添加的就是 m.
2020-11-17 18:34:12 1466
原创 Halcon例程解析——缩放XLD缩放region
缩放XLDgen_image_const (Image, 'byte', 8200, 4200)set_system ('clip_region', 'false')gen_contour_nurbs_xld (ROI_0, [1520.19,2165.88,4269.98,3680.38,2153.81,1411.57], [2714.24,2463.22,-2213.23,7109.67,4982.72,4796.78], [0,0,0,0,0.357983,0.691316,1,1,1,1]
2020-10-28 18:19:14 1062
翻译 C#——绘制箭头的方法
效果见下图,实际上还是有区别的,箭头的起点处微信的是圆端,而我实现的是尖端。 说说我的实现吧,实现方法其实是划线,线的两端都要设置端点样式。看代码: Point _StarPoint = new Point(0, 0);Point _EndPoint = new Point(300, 300); System.Drawing.Drawing2D.AdjustableArrowCap _LineCap = new System.Drawing.Drawing2D.AdjustableArrowCap(
2020-10-27 16:53:21 3902
原创 C#——添加鼠标右键菜单
C#添加鼠标右键方法步骤1 选中要添加右键功能的Form或者控件,打开控件的设计页面。2 从工具箱中找到ContextMenuStrip控件,将这个控件拖曳到Form或者控件的设计页面上。这时系统就会在这个页面下面自动创建一个contextMenuStrip1控件,如果你想在这个页面添加多个菜单,那么你也可以拖曳多个这种控件到设计页面上。3 按照你的要求将这些ContextMenuStrip控件改成你需要的名称。 然后, 选择需要右键弹出菜单的页面,比如你当前编辑的页面中有一个DataGrid,一
2020-10-27 16:49:54 2615
原创 C#——检测鼠标滑轮事件
private void Form1_Load(object sender, EventArgs e) { this.MouseWheel += new MouseEventHandler(Form1_MouseWheel); } void Form1_MouseWheel(object sender, MouseEventArgs e) { if (e.De...
2020-10-27 16:42:12 724
原创 C#——检测ctrl SHIFT ALT是否被按下
private void xxx_MouseClick(object sender, MouseEventArgs e){ if ((Control.ModifierKeys & Keys.Control) == Keys.Control)// CTRL is pressed { } if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) { }}
2020-10-27 16:41:15 788
转载 C#——winform中窗口关闭按钮隐藏与禁用
首先说一句:不存任何一种方式可以单独隐藏关闭按钮,隐藏的话会把所有最大化,最小化,帮助,关闭按钮都给隐藏掉。 第一 种: 禁用窗口上部的关闭按钮 方法一:在Form1的窗口程序中desigener设计器中重写如下方法:(将此部分粘贴到窗口程序中去就可以了) protected override void WndProc(ref Message m) &n...
2020-10-21 17:56:13 2154
转载 C#——子窗体关闭时向父窗体传值
原文地址:C#中子窗体关闭时向父窗体传值作者:GisEr窗体的show方法,没有给调用代码任何通知,如果需要通知,使用showdialog是一种好的选择。在调用show方法后,show方法后面的代码会立即执行,调用showdialog方法后,调用代码被暂停执行,等到调用showdialog方法的窗体关系后再继续执行。而且窗体可以返回一个dialogresult值,他描述了窗体关闭的原因,例如OK,Cancel,yes,no等。为了让窗体返回一个dialogresult,必须设置窗体的dialogresu
2020-10-21 17:53:13 3398
转载 C#——模态窗口 和 非模态窗口
模态窗口(ShowDialog)弹出窗口阻止调用窗口的所有消息响应。只有在弹出窗口结束后调用窗口才能继续。在模态窗口“关闭”后,窗口并没有真正被“关闭”,“关闭”按钮并没有调用窗体的Close方法,只是将窗体的Visible属性赋值为false,隐藏了窗体,所以模态窗口在不需要用的时候,务必手动Dispose释放窗体资源,虽然.Net会定时执行垃圾回收,但是何时执行垃圾回收并不受控制,当模态窗口关闭后窗体资源没有及时手动释放时,其他相关操作可能会引起线程阻塞导致程序假死。模态窗口资源释放后仍然能在当前
2020-10-21 16:50:06 1072
转载 C#——关闭窗体的四种方法
关闭窗体的四种方法 1. close():指仅关闭当前窗体,如果不是主窗体(包含主线程的窗体,并非MDI窗体)的话,是无法退出整个程序的。如果有托管线程也无法退出。 此方法会调用 dispose() 方法,所以它会自动的帮我们释放内存,除了以下两种情况:(1)该窗体是多文档应用程序(MDI)的一部分并且此窗体不可见;(2)此窗...
2020-10-21 16:44:56 4678
原创 Halcon——设计半透明的区域显示效果
原理就是 比如说红色 r g b :255,0,0。 将灰度图复制3份 将其中一份对应区域灰度值增加128,并在合并时设置为 红色通道 ok~~~read_image (test, 'test.png')rgb1_to_gray (test, test)invert_image (test, test)gen_rectangle1 (ROI_0, 49.6555, 72.8333, 120.527, 127.5)r:=testb:=rg:=rpaint_region (ROI_0, t.
2020-10-21 10:37:33 3154
原创 Halcon——设置显示颜色
HOperatorSet.SetColor(HW.HalconWindow, new HTuple("#ff80ff"));ff80ff 代表的是 粉色R:255 G:128 B : 255化为16进制就是 ff80ff编码规律就是“rgb” 正对应 “ff80ff”
2020-10-20 15:56:08 4157
转载 C#——字典用法
作者:txw1958原文:http://www.cnblogs.com/txw1958/archive/2012/11/07/csharp-dictionary.html说明必须包含名空间System.Collection.GenericDictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值)键必须是唯一的,而值不需要唯一的键和值都可以是任何类型(比如:string, int, 自定义类型,等等)通过一个键读取一个值的时间是接近O(1)使用方法 //定义
2020-10-20 15:45:45 1793
原创 C# 设计模式——单例模式
定义 :确保一个类只有一个实例,并提供一个全局访问点。思路将类的默认工造函数私有化,在类中实例化,再提供一个全局访问点。代码 /// <summary> /// 单例模式的实现 /// </summary> public class Singleton { // 定义一个静态变量来保存类的实例 private static Singleton uniqueInstance; // 定义一
2020-10-20 11:04:52 139
原创 Halcon——绘制虚线
set_line_style(WindowHandle,[20,7,3,7])passing line (standard)set_line_style(WindowHandle,[])
2020-10-16 18:10:35 2341
原创 Halcon——解决窗口刷新闪烁问题
问题出处:当现实图像变量语句与鼠标等事件绑定时,频繁刷新图像界面,会出现窗口闪烁的问题。解决办法:可以按照例程 median_interative.hdev 例程中while循环每次都刷新图像窗口,但是不会出现闪烁问题。很流畅。原因就在set_system (‘flush_graphic’, ‘false’)set_system (‘flush_graphic’, ‘true’)这两句算子。方法是将需要刷新的变量语句,放在这两句之间,先是停止更新界面,生成变量后,在一起更新界面。注意的是
2020-10-16 15:44:03 3903
原创 Halcon——C#调用halcon导致绘制区域异常
问题出现:定义ParentROI父类 ChildROI子类在父类中定义抽象方法 在子类中实现 其中涉及绘制ROI,然而在实践中发现,绘制出的区域被裁剪显示不完全,就像被一个处左上角的矩形取交集一样。解决办法:经查halocn set_system方法其中涉及到了 设计了系统的内部宽度高度等参数,在没有实例化之前,所有大于此区域的ROI都有将被裁剪。只需要按照如下设计就好了。HOperatorSet.SetSystem(“width”, 800);HOperatorSet.SetSystem
2020-10-16 11:14:32 1652
SEMI E30.pdf
2021-01-02
Halcon-HoughCirclesDemo.7z
2020-11-22
CaltabLearn.rar
2019-12-05
CSharp实现SQLite增删改查保存显示功能.rar
2019-09-20
SmoothingFilters.cpp
2019-09-17
Histo_localprogramming.cpp
2019-09-16
HistogramStatistics.cpp
2019-09-16
HistoProgramming.cpp
2019-09-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人