勇哥手头上的C#工程要由基于halcon10视觉的改为halcon17版的视觉。更换的原因是因为halcon17比较新比较潮,不能落伍…… 其实是因为halcon10的窗体控件以及内存泄露方面有些问题。勇哥在这里记录一下以备忘。首先把halcon17的下面两个目录下的dll全部复制到你程序的bin目录下面。然后在你的程序中,凡是用到halcondotnet的引用,全部删除,引用新版的。版本号如划线处所示17.12.0.0在你的代码中,凡是用到“GigEVision”的都改成“GigEvision
1. 仿射变换类型 仿射变换有:平移、旋转、缩放、斜切(就是将斜体字导正)。2. 求稳定的特征点 要进行仿射变换,必须先获取变换矩阵。要获取变换矩阵,必须先获取特征点坐标、角度等信息,几何匹配和bolb是获取特征点的高效方法,除此之外还有其它方法,只要能稳定的求出特征点即可。 3.仿射变换流程 (1.)获取特征点坐标、角度
以前在使用算子OpenFramegrabbe连接相机时,一般是这样的:open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'default', 'defa
形态模板的定义与查找是工业视觉里最基本的常用操作。下面勇哥提供一个例子。下图是定义形态模板,并且显示模板轮廓。换一张不同姿式的图片,查找模板,并显示模板轮廓、ROI、中心点。dev_set_draw ('margin')
dev_set_color('green')
dev_close_window()
dev_open_window(0, 0, 512, 382, 'black', 
angle_lx( : : Row1, Column1, Row2, Column2 : Angle) 函数作用:计算线与水平轴间的夹角逆时针旋转向量到水平轴的角度即为结果值,该结果取决于两个点的顺序,用弧度表示,范围为[-pi, pi]上一段代码:ange_lx(Row_1, Col_1, Row_2, Col_2, Angle)
************************************************
手眼标定涉及的坐标系有:工件坐标系工具坐标系相机坐标系(相机坐标系里又有图像坐标系和像素坐标系,这其实就是前面讲的单目标定的内容)基坐标系手眼标定一般有两种形式:1、相机固定(eye-to-hand)我们需要的最终结果,即得到base 与 cam 的空间位置关系,即一个4*4的变换矩阵。这个可以通过移动tool带着标定板移动到相机下方不同位置角度,由相机多次拍摄标定板来计算得到。有些相机虽然固定在机械手上,但如果相机每次拍摄时都回到标定时的固定位置拍摄,这还是属于eye-to-hand模式,即相
通过本例程巩固了对剖面灰度值的描述,并进行测量,算子使用同“halcon例程学习笔记(2)”。此例程进一步学习了halcon中的基本函数的使用方法:subset 求取一个数组的子集find 查找相应条件的值的位置索引数组的错位减法的使用。其它基本图像处理基本算子,可以查阅halcon使用手册,详细了解。例程代码如下:dev_update_off ()
dev_close_window ()
read_image (
本例程来做halcon10.0版本中的一维函数中check_smd_tilt.hdev例程,通过此例程可以学习到如何使用halcon中算子measure_projection通过投影图像上垂直于剖面线方向的灰度值来提取1D灰度剖面,如下是对此算子的详细理解:更多关于测量的算子理解,可以参考北京大恒宣讲的PPT halcon测量技术。下面例程是检测SMDS是否与近水平或者相对相机是否倾斜。分析图像发现相机的景深很小,因此倾斜的拍摄的图像是模糊的。因此才程序采用了首先对图像进行分割,然后
其为分析液体中的成分,得出区域中的平均灰度和面积;在液体二值图像中有几个亮斑,需要提前去除;液体成分中灰度变化不明显,直接采用全局阈值处理效果不佳;读取鼠标按键数值,并选择区域。threshold (Image, Large, 110, 255)
* Dilate regions with a circular structuring element
dilation_circle&
这个例程的目的是使用算子来找出结构不规则的原则,其中涉及到一些算子:crop_rectangle1:从图像中截取矩形图像
gauss_filter:高斯滤波
watersheds:图像分水岭算法
smallest_rectangle1:平行于坐标轴的最小外接矩形Part Ⅰ 初始化程序dev_update_off ()
dev_close_window ()
dev_set_draw ('margin')
dev_set_li