2019-10-31 21:38:16
这个话题非常重要。勇哥苦于手中的项目遇到这样的问题。这些问题表现是:(1)视觉程序内存占用会越来越大。这种内存变大通常是缓慢变大,几天不关机持续运行的话,大到几个G也不稀罕。通常,急速内存变大要容易找到问题些,最怕的是缓慢变大。(2) 视觉程序会越运行越慢,会影响设备的PPM。通常工厂里的电脑一辈子不会关机,你可别指望他们会每班给你重启软件一次。(3)程序句柄越来越多,大至几万都有可能。这是一种什...
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-27 09:33:15
命名空间:netMarketing.automation.baseClass.ConfigClass.Config功能:以XML方式保存程序配置文件版本要求: netMarketingv1.3.1功能详细说明:这个类是勇哥的同事写的一个类,比较好用,特收录进netMarketing中。这个类使用的时候只需要做两件事:(1)创建一个类,用来声明要保存配置文件的项目(2)在你的调试面板中放入一个pro...
2019-10-26 20:07:38
常用数学符号:√ ∠ θ α β ° Δ ≥ ≤ ≈ ≠∵ 因为∴ 所以ι π120运算符号如加号(+),减号(-),乘号(×或·),除号(÷或/),两个集合的并集(∪),交集(∩),根号(√ ̄),对数(log,lg,ln,lb),比(:),绝对值符号| |,微分(d),积分(∫),闭合曲面(曲线)积分(∮)等。关系符号如“=”是等号,“≈”是近似符号(...
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-25 09:14:10
(一) 浏览已经安装好的全部程序win10有时候安装完程序后,安装程序没有创建快捷方式,然后就找不到新增的程序在哪里了。这时候可以用到本技巧。在地址栏内输入Shell:AppsFolder这个名字,如图所示,然后回车,可以看到打开的这个文件夹内疚包含了当前电脑所有的安装程序。或者创建一个文件夹,更名为:Applications.{4234D49B-0245-4DF3-B780-389394345...
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-21 11:48:46
(三) 优先使用聚合,而不是继承有一段时间,养猪场的老板雇用了清洁工人来打扫猪舍。但有一天,老板忽然对自己说"不对啊,既然我有机器人,为什么还要雇人来做这件事情?应该让机器人来打扫宿舍!"于是,这个需求被提交到了机器人的研发小组。看到这个需求,我们敏感地意识到,这是一个潜藏了更多变化的需求,未来机器人的功能还可能会不断增加,于是,我们提取出了一个抽象的机器人接口,并实现了两个具...
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 19:09:44
勇哥最近重温这部94版的三国演义经典,突然发现在第43集刘备与孙尚香成婚这集有一首好听的歌曲,真得是惊为天人,赶紧在网上查了一下,歌曲名为《子夜四时歌》,初听有点像越剧的调,网上介绍说是吴语歌。听说吴语有8种音调,读唐诗非常适合,果然很有古风哦。在网上有许多人对此曲赞美,收录一篇共鸣之。最近反复欣赏了老版(94年央视)《三国演义》中第43集刘备迎娶孙尚香时,一段场面宏大的迎亲舞蹈《子夜四时歌》,不...
2019-10-20 10:43:09
三种不同的清理变量、显示窗口或图形的命令。(1)、比较重要的清理:清除变量命令:clear说明:运行m文件之前一般都需要该命令,否则可能出错。(2)、比较常用的清理:清理当前命令窗口命令:clc说明:clc 代表 clear command window,即清空当前的 command window窗口,也就是清屏。注意,只是清屏,而并未清除内存中的变量。(3)、另外一种清理:清除当前激活的figu...
2019-10-20 10:31:47
勇哥接触Matlab日子不短了。以前在工作中主要用它来绘制函数图像。由于使用它在C#中绘制图像普遍反映比较慢,因此几乎没有什么项目中使用了它。现在突然想到它是因为想学习一下矩阵与图形学的基础知识,辅助学习一下这些方面是该软件擅长的,因此在此留下学习的记号。Matlab最大的优点就是简单,容易操作。首先介绍正玄函数绘制过程。 确定函数的定义域,这里以(-π,π)为例。 程序如下:x=[-pi:0...
2019-10-18 20:35:04
话题见下文:经典算法——绘制空心圆勇哥这里写下其实践的内容。首先,画圆公式为: 原点为圆心,半径为r(r>0)的圆的标准方程为x2+y2=r2下面的代码中ox,oy是原点的位置, radius是圆的r。g是画布句柄。private void drawCircle2(Graphics g, int radius, int ox, int oy)
{...
2019-10-16 19:45:38
这是勇哥很久以前在博客园里面发的文章。它是读设计模式的书时做的实践,我个人是比较喜欢的,这里转载过来给学习设计模式的朋友把玩一下。对于设计模式, 从本质上说, 其最大的用途就是适应需求的变化. 因为有了设计模式,我们可以在设计阶段就为未来可能发生的变化留下足够的空间.我们通过一个建造现代化养猪场的故事, 来讨论一下设计模式与需要变化之间的关系.(一)设计模式最根本的意图是适应需求的变化一个机器人研...
2019-10-15 11:04:01
在TurboC中,可以使用各种现成的函数绘制各种各样有趣漂亮的图形,而在VC中则比较难以实现。但是,我们可以用“*”当作点,连点成线,用来绘制各种线条或者图形。这就得看算法了,所谓算法就是解决问题的方法。这里呢,我们就一起来看看,在Visual C++6.0中,如何利用“*”绘制一个空心圆。大家有什么好的建议或者意见,都可以在我的评论栏里给我留言,希望我们相互学习,共同进步。第一步:建立坐标系根据...
2019-10-15 09:50:08
三点确定一个圆的计算方法最近在写的一个软件需要根据三个坐标点来计算一个圆。因此花了点时间推导了相关的公式。这个推导不算太难,放在这里主要是做个备忘。我们设一个圆的圆心坐标为 ,半径为 r 。那么这个圆的方程可以写为:在这个圆上随便取三个点,设这三个点的坐标分别是 那么有:公式(1)(2)相减,(1)(3)相减之后经过化简可以得到:有唯一解的条件是系数行列式不为 0 :简单变变型也就是:这样写几何含...
2019-10-15 09:46:11
1. 三点绘制圆 已知三点为(x1,y1)、(x2,y2),(x3,y3),求三点形成的圆的坐标,可以设求得的圆的原点为(X,Y),半径为R,这样可以得到方程组: (x1-X)²-(y1-Y)²=R² (1)式 (x2-X)²-(y2-Y)²=R² (2)式 (x3-X)²-(y3-Y)²=R² (3)式由上述方程组可以得到: 2(x1-x2)X +2(y1-y2...
2019-10-14 21:41:52
运行程序前先创建ROI以创建模板,然后顺时针或者逆时针绘制三根直线,以确定找线的方向与距离。由于找线的时候是模板跟随的,最后得到下面的结果:代码如下:其中draw_rake,dev_display_shape_matching_result,rake,pts_to_best_line为外部算子。有需要的朋友可以找勇哥索取。dev_close_window ( )
read_image (Imag...
2019-10-13 20:10:48
命名空间:netMarketing.Net.SocketServerAndClient.TcpServernetMarketing.Net.SocketServerAndClient.SocketClientnetMarketing.Net.SocketServerAndClient.RunLog功能:Sokect服务端与客户端版本要求:netMarketing v1.3.1功能详细说明:最近公司...
2019-10-13 19:11:54
halcon17的找线功能其实是对之前halcon10版本找线方法的封装。勇哥下面这几篇文章介绍了halcon10版本的找线方法,你会发现,halcon17的找线算子的参数其实跟这篇文章介绍的差不多的。Halcon学习(27-2)halcon测量技术:找线带ROI跟随的找边测试代码(halcon代码演示)经过封装后的找线算子,还是非常好用的,你只需要给定找线的起始与终止点即可。演示代码如下:rea...
2019-10-10 21:56:19
勇哥的一个案子里面用到这个功能。因为考虑到数据库的表字段没有定形,经常需要修改。如果使用手工拖放TextBox的方案与字段对应的话,程序经常需要改变。因此最好是由数据库表的字段,动态生成TextBox进行显示与编辑,就像下图程序界面这样。首先,我们列出表结构,获取全部字段。然后new出textbox控件,add进控件flowLayoutPanel,这个控件是其它控件的容器,内容过多时自带滚动条。怎...
2019-10-10 20:35:39
对于SQL Server数据库有两种方法查询表结构第一种方法sp_help Accounts_Users 其中Accounts_Users 表示表名执行结果如下第二种方法sp_columns Accounts_Users 执行结果如下--------------------- 作者:hackpig来源:www.skcircle.com版权声明:本文为博主原创文章,转载请附上博文链接!...