2019-11-16 20:00:02
如下图所示,cosθ=x/r, 即x=cosθ。我们习惯把纵轴变成y, 于是函数可以写成y=cosθ。我们把图7-2-2(cosθ)与上一篇的图7-1-3(sinθ)仔细比较一下。(勇哥为了方便大家观察,引用如下)可以看到,cosθ就是sinθ从90°开始的部分。所以这cosθ和sinθ的图象完全一样。两者的周期都是360°。我们可以说:cosθ的图象是sinθ的图象向左平移90°得到的。也可以反...
2019-11-12 21:17:05
这个错误是勇哥手里的代码引用halcon18后出现的。Help file for package 'system' in directory 'E:\Program Files\MVTec\HALCON-18.11-Progress\help'
is corrupt(error=8000). Please check the correct setting of...
2019-11-12 17:13:28
答案是,不可以,真是害死个人。这怎么玩哦,又得重新用halcon10标定。...
2019-11-10 08:51:53
所谓函数:
指的是变量与自变量的关系
其中,变量是随着自变量的变化而变化的,自变量决定变量例如,y=2x2+1当x取值1,2,3,4 时,y都有一个对应的值。y就是变量,x就是自变量。我们称 y是x的函数。y=sinθ的图象我们令r=1,则无论θ的终边在什么位置上, sinθ=y/1=y。也就是,θ终边上的点纵坐标y就是sinθ的数值。如图7-1-1所示,在平面坐标内,以原点为圆心,半径为1的...
2019-11-09 21:22:59
利用终边位置的对称性就可以使得对任何角都能进行sin、cos的互换。例如:(1)sin(-35°)(2)cos230°(3)tan(-220°)(4)sin(-220°)解:sin和cos的互换如下图:之前学的直角三角形中和为90的两个角的三角比如何互相转换的。sinθ=cos(90-θ) 如上图中两边都是a/ccosθ=sin(90-θ) 如上图中两边...
2019-11-08 20:55:37
如果把角θ看作以原点为中心的像钟表指针一样旋转射线的旋转角的话,三角比就扩展到了三角函数。在射线上取一点P(x,y),OP的长为r(r>0),这样,就可以定义角θ的各类三角函数。在三角函数中表示旋转了多少度时,-60°和300°虽然终边相同,但它们是两个不同的角。但是在几何学里,60°和300°却是相同的角。接下来看看θ变化时,三角函数值是如何变化的。首先,当θ=360°和θ=0°时终边位置...
2019-11-08 17:02:07
通过本例程学习,掌握了read_image读取多幅图像,channels_to_image算子的使用。本例程的算法思路是通过求取各个通道求取暗的和亮的部分,然后各个通道使用union1进行联合,得到的联合后的暗图像和明亮图像,然后求取明暗图像的交集。后续经过基本的选择处理,得到漏焊的焊点。get_system ('clip_region', Information)
set_sy...
2019-11-08 16:39:54
(1) fast threshold(mage: Region: MinGray, MaxGray, Minsize:) ①算子描述: 全局阈值,此算子与threshold类似,只是多了一个輸入参数MinSize :提取对象的最小尺寸(2) gray histo(Regions, Image : : : AbsoluteHisto, Relativ...
2019-11-08 16:34:56
(1)函数原型: select shape proto(Regions, Pattern, SelectedRegions , Feature, Min, Max)(2)函数功能: 依据某种相互关系筛选区域。(3) Feature参数的选项: 1)distance center:判断Regions中每个region的中心(area ce...
2019-11-08 13:59:22
勇哥的这个项目是整盘物料机器人视觉取料。由于该项目有两个相机,一个是整盘入料相机,用于判断物料有无和粗定位。另外还有一个下相机,用于精定位后物料入转盘机。本篇说的就是整盘入料相机的粗定位算法。这里勇哥使用的是halcon的形态学算法,相比找边的方式来说,其意义是速度快,能满足视觉一键换型的需要。read_image(backImg, 'C:/Users/hackpig/Desktop/蓝牙...
2019-11-08 13:47:21
(1)实现功能: halcon中调用smallest_rectangle2()函数获得仿射外接矩形(旋转外接矩形),返回的是矩形的中心坐标、角度和长短轴长度,但是在有些时候需要使用的是仿射外接矩形的四个顶点坐标。 本文实现的功能是通过矩形的中心坐标、角度和长短轴长度获得四个顶点的坐标。(2)实现代码: smallest_rectangle2 (ObjectSelec...
2019-11-07 14:18:12
如下图,想取得这根条状物的突出来的“刺”。寻找图中边缘突出的部分,解决思路:1、阈值分割,找出黑色部分2、生成一个小矩形作为StructElement,进行opening操作,即可找到如下图的部分3、与阈值分割后的进行difference操作,即可找到突出部分,后面再进行求取突出的最边缘部分。上代码:read_image (Image, 'C:/Users/gongyong/Desktop...
2019-11-06 20:22:23
第四个要掌握的定理是正弦定理,它指的是:在任意一个平面三角形中,各边和它所对角的正弦值的比相等且等于外接圆的直径根据正弦定理,图4-6-2会有几个比较有意思的特点:只要BC边不变,其它两条边无论怎么变,∠A一定是30°任意一对边和其角的正弦比值一定等于这个圆的直径20勇哥用CAD验证了一下第一点。也验证了第二点。CAD的计算结果:三角形的外切圆的直径是57.75注意:由于CAD的测量时存在结果精度...
2019-11-06 16:44:16
勇哥说的这个话题的起因是追求极速的拍图速度。机器ppm不达标的情况下,往往对视觉的处理速度有变态的要求,为了争取处理时间最短,几十毫秒也要争取。halcon的接口是通用接口,其速度是比不上相机厂商自己相机配套的SDK的采图速度的。下面程序运行后,500w的CCD拍图的时间(不算显示时间)达到惊人的32毫秒,如果用halcon接口,最快的我见过是180毫秒。using Basler.Pylon;...
2019-11-06 16:13:32
这篇主要是C#和Halcon的混合编程,写给新手们看的。halcon源程序:dev_open_window(0, 0, 512, 512, 'black', WindowHandle)read_image (Image, 'C:/Users/Administrator/Desktop/猫.jpg')dev_display(Image)get_image_size(I...
2019-11-04 22:16:17
调用halcon引擎有两个直接的好处:避免C# 与halcon代码混编时可能产生的内存泄露问题修改halcon程序时不用重新编译C# 勇哥写了一个示例,详细的应用感受和缺点限制勇哥会持续做相关的总结给大家分享。对于halcon17来说,要运行下面的程序,你要引用halcondotnet.dll
hdevenginedonet.dllusing HalconDotNet;
using Syste...
2019-11-04 20:24:02
余弦定理如下,三角函数中6个必须掌握的公式,这是第3个。先来推导一下。如图4-1-1中,ΔABC中,已知∠A=60°,b=10,c=15,求a的长度。60°角的三边比是 1:2:√3以此可以求出e,h(1) e/b=cosA ∴ e=b*cosA (2) h/b=sinA ∴ h=b*sinA (3) d=c-e=c-b*cosA (4) a2=h2+d2 a2=(b*si...
2019-10-27 21:55:10
见下图,求三角形ΔABC的面积。 按三角形面积公式 (面积=底×高÷2。其中,a是三角形的底,h是底所对应的高)设底边b=20,经过顶点B作底边CA的垂直线,则点H就会落在CA的延长线上,BH就是三角形的高h,这和图3-1-2测量海拔高度是一样的。在做高h时,我们创建了一个三角形Δ由于h/c=sin40° ,得h=c*sin40° ∴ SΔABC= 1/2*b*h=1/2*20*18*sin40°...
2019-10-26 19:57:26
三角函数里有许多公式,需要牢牢记住的只有6个,其它的都是其的变形。证明公式(1): a2+b2=c2a2/c2+b2/c2=1(a/c)2+(b/c)2=1假设∠A=θ ,则a/c=sinθ, b/c=cosθ∴ sin2θ+cos2θ=1证明公式(2)利用60°度直角可以验证公式(2)tanθ=sinθ/cosθtan60°=sin60°/cos60°=(√3/2)/(1/2)=√3下面来证明...
2019-10-26 15:21:08
首先,我们先来看看这个数的倒数:其实矩阵的逆矩阵也跟倒数的性质一样,不过只是我们习惯用A-1表示:问题来了,既然是和倒数的性质类似,那为什么不能写成1/A?其实原因很简单,主要是因为矩阵不能被除。不过 1/8倒可以被写成 8-1。那矩阵的逆和倒数还有其他相似之处吗?当我们将一个数乘以它的倒数我们得到1。8 × (1/8) = 1当一个矩阵乘以逆时,我们得到了单位矩阵(而单位矩阵,其实也就是矩阵中的...
2019-10-25 21:34:18
特殊三角形的sin,cos和tan内角为30°,45°,60° 的特殊三角形,其三角比如下:sin, cos, tan的一些规律解题如下题。如果只是算一算x,y是多少没多少意思。勇哥用halcon的算子来画出题意并解题。下面的代码中,我们把c=20改为c=200,这样屏幕上的线条长一点方便观察。dev_close_window()
dev_open_window(0, 0, 400, 400,...
2019-10-25 14:12:13
如果不使用模板来进行ROI更随,该如何做到呢?勇哥先把图片放上来:我想所有人都会想到用形态学算法,阈值勾出电池本体,然后取得电池角度与位置信息,就可以ROI跟随了。难点在哪里呢?我们的目的是:“取电池几何中心的位置与电池的方向。”那么电池的几何中心可以是电池整个外接最小矩形的中心,这个比较容易办到的。但是方向呢?我们可以取电矩形本体的外接矩形的角度做为方向,但是这一点因为极耳的干扰,我们取到本体的...
2019-10-24 22:58:06
这个证明三平方定理的方式比较巧妙,勇哥用autocad画了个示意图。大正方形的面积C2= 四个直角的面积+ 小矩形的面积结果就是: c2=b2+a2AutoCAD是个好东西,勇哥可以直接在屏幕上测量直角三角形的a边与b边,结果如下:距离 = 82.9038,XY 平面中的倾角 = 34, 与 XY 平面的夹角 = 0
距离 = 55.9193,XY 平面中的倾角 = 304, 与 XY...
2019-10-24 20:28:59
如果是下相机对位,有时候会碰到相机拍到复杂背景,造成需要处理的工件被背景干扰的问题。这时候有一个办法是去掉背景。一般来讲,每次拍到的背景应该是一样的,只是每次拍到的工件不一样。勇哥直接上图片与演示代码,最后介绍一下相关的算子。(图1 背景图像)(图2 含有背景图像的电芯)下面是代码处理的结果。(图3 电池本体之外的背景全部镂空的效果)(图4 含有膨胀区域的处理结果)read_image(b...
2019-10-24 15:18:19
勇哥继续谈谈绕任意点的旋转。绕原点的旋转是二维旋转最基本的情况,当我们需要进行绕任意点旋转时,我们可以把这种情况转换到绕原点的旋转,思路如下: 1. 首先将旋转点移动到原点处 2. 执行如2所描述的绕原点的旋转 3. 再将旋转点移回到原来的位置 (图1)勇哥根据上述原理写了段演示代码: /// <summary>
/// 点...
2019-10-22 20:47:33
勇哥继续讨论二维点旋转这个话题。这一次使用Matlab的旋转矩阵来实现图像旋转。我们把旋转原理再补充说明一下,之前我们说的是绕原点旋转,现在继续引入饶任意点旋转的原理:以坐标原点为中心旋转的原理:点p0p0绕坐标原点逆时针方向旋转θθ角度得到点p1p1.以任意图形中心点为坐标原点旋转原理:Matlab编程实现(1)Matlab自带函数实现图像任意角度旋转旋转函数介绍:B=imrotate(A,an...
2019-10-22 13:36:05
实际应用中,往往需要三点确定一个圆。例如,在机器人视觉标定中,为了能不用手工创建工具坐标,就可以通过三点定圆的方式算出工具坐标的中心在哪里。我们知道,如果三点不共线的情况下是可以产生一个圆的,有关的公式推导见下面的贴子。三点确定一个圆的算法(C#代码)这里勇哥提供公式的实现代码:private Tuple<PointF, double> drawCircle3P(PointF pt1,...
2019-10-22 11:05:50
继续上一篇,勇哥用halcon来实现上述的旋转矩阵效果。halcon的矩阵运算流程如下:① 通过hom_mat2d_identity算子创建一个初始化矩阵(即[1.0, 0.0, 0.0, 0.0, 1.0, 0.0]);② 在初始化矩阵的基础上,使用hom_mat2d_translate(平移)、hom_mat2d_rotate(旋转)、hom_mat2d_scale(缩放)等生成仿射变换矩阵;...
2019-10-20 20:50:40
勇哥先来谈谈点绕原点旋转如下图, 在2维坐标上,有一点p(x, y) , 直线opの长度为r, 直线op和x轴的正向的夹角为a。 直线op围绕原点做逆时针方向b度的旋转,到达p’ (s,t) s = r cos(a + b) = r cos(a)cos(b) – r sin(a)sin(b) (1.1)t = r sin(a + b) = r sin(a)cos(b) + r cos(a) s...
2019-10-20 10:43:09
三种不同的清理变量、显示窗口或图形的命令。(1)、比较重要的清理:清除变量命令:clear说明:运行m文件之前一般都需要该命令,否则可能出错。(2)、比较常用的清理:清理当前命令窗口命令:clc说明:clc 代表 clear command window,即清空当前的 command window窗口,也就是清屏。注意,只是清屏,而并未清除内存中的变量。(3)、另外一种清理:清除当前激活的figu...