2020-10-20 22:38:29
在二维平面中,相同的来料都有它关于来料相同的平面矩阵,因此在初始来料上规划好路径后只要得到二次来料它发生的位移以及旋转角度就能很容易得到这次来料上的规划路径关系,从而控制机械手准确走完规划路径。但当来料过大超出相机抓图的视野就可以通过mark点来获得这两个关系,mark点可以是一个、两个或者三个,分别取决于不同的场合。关于一个mark点的定位就非常简单了,但有个局限就是这个mark点必要很容确定旋...
2020-10-20 22:34:49
关键算子: orientation_region vector_angle_to_rigid affine_trans_region 测试图片:halcon代码:*此例子将图中没有偏移的形状参照旋转的形状进行旋转
read_image (Image, 'D:/Halcon-WorkSpaces/Test/Image/test14...
2020-10-18 21:17:20
例一:毛刺在往外凸的面上策略1:分割出黑色部分,然后通过开运算去掉毛刺,再通过原黑色部分区域减去开运算之后的区域,得到毛刺部分的区域。 read_image (Tu, 'C:/Users/xiahui/Desktop/tu.jpg')
binary_threshold (Tu, Region, 'max_separability', 'dark',...
2020-10-15 21:55:43
inspect_bottle_mouth.hdev巧妙运用了极坐标变换法,细节很精细,值得学习* tuning parameters
SmoothX := 501
ThresholdOffset := 25
MinDefectSize := 50
*
* initialization
PolarResolution := 640
RingSize := 70
get_system...
2020-10-11 21:33:57
(一) 判断对象为空对于region是否为空,用下面的算子。IsEqual1是个inter型,如果为空则为1,否则为0gen_empty_region(EmptyRegion1)
test_equal_region(EmptyRegion1,CheckARegion,IsEqual1)
if(IsEqual1==1)
return()
endif判断hobject为空则用算子tes...
2020-09-30 22:40:20
接上篇 http://www.skcircle.com/?id=1436 上篇贴子谈了怎么样标定后,定位机器人运动到任意一个位置时,相机看到的特征点的位置。这一篇继续实验一个重要话题: 怎么计算机械人旋转中心到相机视野中心的距离。机械人旋转中心在tool 0状态就是U轴中心,或者说是法兰盘的中心, 如下图所示。(图1)另外,有时候我们也会求机器人抓子未端的标定特定点到相机视野中心的距离。以上两者的...
2020-09-30 14:21:26
原图:(图1)想求出它的黑色边界,用来判断NG的部分。如下图所示,蓝色线是勇哥想求的边界。红色箭头所指的是缺陷,它有两部分。颜色较浅的灰色带和颜色深的黑色带,它们是两种类型的NG特征,其判断阈值是不同的。(图2)勇哥想到的几个方法:(一) 通过边界xld拟合椭圆设想是通过图3的两根xld,拟合出图4的椭圆。(图3)(图4)dev_close_window()
read_image (Pic2...
2020-09-29 15:03:32
继续上篇《勇哥的视觉实验:眼在手上(eye in hand)的标定实验(二) 相机位于机器人第3轴时,并且定位特征在相机视野内不可见》在上篇中,勇哥让机器人走了四个位置:pt1, pt2, pt3, pt4由于相机镜头视野较小,在这个四个位置相机看到的视野范围是不同的。而我们标定时选择是在pt1时相机看到的视野内容进行标定的,当我们在这个视野内任选一个点时,转换出来的机械坐标都可以正确让笔尖戳到这...
2020-09-27 22:18:34
继续上篇《勇哥的视觉实验:眼在手上(eye in hand)的标定实验。相机挂在x,y平台上,全部九点标定特征在相机视野内可见》这次勇哥换用Epson四轴scara机器人来做实验。如下图所示,相机挂在第3轴上面,因此这种眼在手上的工作模式分为两种情况:(1) 相机移动,不旋转(2) 相机移动并且旋转本篇研究一下第(1)种情况。(图1)我们开始九点标定。请看上图,这里勇哥还是用笔尖做为标定特征点。要...
2020-09-11 14:51:48
这个问题的现象是下面这句话报错,说是参数有问题:HOperatorSet.SetFramegrabberParam(AcqHandle, "Gain", 2.0);而在halcon中,连接相机后查阅参数,其中增益参数就叫Gain,这个是绝对没有写错的。而这句话的设置时机放在了取得相机设备句柄之后。 HOperatorSet.OpenFramegrabber("HMV...
2020-08-29 15:57:41
海康工业相机SDK Halcon接口是比较好用, 它使得我们可以利用halcon的语法利用SDK的功能.之前勇哥写了一篇用halcon代码演示使用方法的贴子. http://www.skcircle.com/?id=1427 现在写一个C#的应用类, 方便自己也方便了大家.勇哥写了个应用类, 如下:using HalconDotNet;
using MvCamCtrl.NET;
using...
2020-08-24 20:32:32
现象是下面代码在halcon窗口上显示字符串,遇到非汉字字符则显示不出来。下图中符号"[", "]", 还有数字都无法显示。代码如下: Window.SetColor("red");
Window.SetTposition(30, 30);
Window.WriteString(string.Format("[侧面齿上碰...
2020-07-19 15:33:20
create_pose创建3D位姿( : : TransX, TransY, TransZ, RotX, RotY, RotZ, OrderOfTransform, OrderOfRotation, ViewOfTransform : Pose)输入:TransX沿x轴平移(以[m]为单位)。默认值:0.1建议值:-1.0,-0.75,-0.5,-0.25,-0.2,-0.1,-0.5,-0.25...
2020-07-16 22:06:51
这个实验的目的是不用九点标定,让镜头中心移动对准视野内指的点上去。本篇是对贴子《九点自动标定---如何让相机视野中心十字对准目标物?》的实验记录。先写段halcon代码,配合xyz平台进行捕捉屏幕中心的像素坐标位置。dev_close_window()
dev_open_window(0, 0, 612, 512, 'black', WindowHandle)
dev_set_...
2020-07-14 20:29:50
相机是彩色的, 用下面的代码保存为本地图片, 打开发现是彩色的.但是, 你会发现显示到屏幕上却是黑白的.dev_close_window()
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
open_framegrabber ('GigEVision2', 0, 0, 0, 0, 0, 0, '...
2020-07-13 22:13:06
一、提高Halcon的运算速度,有以下几种方法:1、Multithreading(多线程)2、Automatic Parallelization(自动操作并行化)3、Compute devices,利用GPU提速,如果显卡性能好,至少可以提高5~10倍的运算速度二、多线程1、官方自带的例程get_operator_info.hdev,可以查看支持多线程的算子;* Determine the mul...
2020-07-13 22:03:26
极坐标的用途把圆形的图片转换为矩形,便于字符识别和关键区域的提取。在halcon中对应的算子(1)极坐标的展开:polar_trans_image_ext(Image : PolarTransImage : Row, Column, AngleStart, AngleEnd, RadiusStart, RadiusEnd, Width, Height, Interpolation : )(2)极坐...
2020-07-08 07:04:11
有人问到图片如果保存在数组中,调用的时候下标是为0还是1?这个问题勇哥也是有点犹豫,对方信哲旦旦说下标应该为1起始,否则报错。我猜应该是指的C#那边吧?在halcon这边,对象数组确实从1开始,如果为0则报错。那么图形变量可以下标访问吗?答案是用向量变量。并且下标可以为0。下面的代码梳理一下几个常见的错误。read_image(img1,'E:/pic3.tiff')
read_...
2020-06-29 15:26:12
勇哥这套halcon引擎的学习笔记贴子共七篇,它是在官方指导文档《http://www.skcircle.com/?id=1343》的基础上学习编写而成的笔记。只是有一篇讲解怎么调用向量变量的没有加入,因为勇哥实在不知道这个向量变量有啥子用。以后如果搞明白了再加入吧。2020/7/3勇哥注:原来halcon中的向量就是个容器,跟c++标准模板库中的那个向量是一致的。第八篇加上来吧halcon引擎学...
2020-06-27 21:08:41
原型定义:global [def] {object|tuple} [vector(<Dimension>)] <Variable Name>复制代码可以定义图形类型object和tuple元组类型的数据,可定义的值如下:'object', 'tuple', 'def object', 'def tuple',...
2020-06-27 21:03:30
Halcon中自带多线程处理算子,使用起来非常简单。下面就对线程算子进行简单的介绍。首先介绍用于多线程处理的两个算子,par_start 和par_join()。Halcon的帮助文件中对par_start 是这样介绍的:To start a new thread, prefix the corresponding operator or procedure call with the par_s...
2020-06-26 16:31:08
勇哥这套halcon引擎的学习笔记贴子共七篇,它是在官方指导文档《http://www.skcircle.com/?id=1343》的基础上学习编写而成的笔记。只是有一篇讲解怎么调用向量变量的没有加入,因为勇哥实在不知道这个向量变量有啥子用。以后如果搞明白了再加入吧。2020/7/3勇哥注:原来halcon中的向量就是个容器,跟c++标准模板库中的那个向量是一致的。第八篇加上来吧halcon引擎学...
2020-06-26 16:26:23
勇哥这套halcon引擎的学习笔记贴子共七篇,它是在官方指导文档《http://www.skcircle.com/?id=1343》的基础上学习编写而成的笔记。只是有一篇讲解怎么调用向量变量的没有加入,因为勇哥实在不知道这个向量变量有啥子用。以后如果搞明白了再加入吧。2020/7/3勇哥注:原来halcon中的向量就是个容器,跟c++标准模板库中的那个向量是一致的。第八篇加上来吧halcon引擎学...
2020-06-24 16:48:33
BasicsTo use HDevEngine in Visual Studio .NET, you mustadd a reference to the HALCON/.NET assembly, either by adding an instance of HSmartWindowControlto the form or by adding the reference directly v...
2020-06-23 17:45:16
在以前的版本中,可以在需要窗口句柄的地方直接写上窗口句柄值。例如下面的代码:for Index := 0 to 360/step by step
x:=px+px/2*cos(rad(step*Index+step))
y:=py+py/2*sin(rad(step*Index+step))
xary[Index/step]:=x
yary[Index/st...
2020-06-19 17:44:49
这个halcon例程是:pose_of_known_3d_object.hdev1.set_origin_pose( : : PoseIn, DX, DY, DZ : PoseNewOrigin)平移POSEIN的原点,输出为新的原点。注意,平移沿着OBJ的坐标新进行,而非沿着摄像机的坐标系进行。2.disp_3d_coord_system (WindowHandle, CamParam, Pos...
2020-06-18 22:34:32
halcon的标定助手完成标定后,是可以自动生成一些代码。它是很好的参考。////////////////////标定数据Tuple////////////////CameraParameters := ['area_scan_division',0.00928003,-1009.07,2.50105e-06,2.5e-06,1236.62,1005.87,2592,1944]...
2020-06-11 10:50:52
多个相机标定在一起,即使用一个坐标系。其好处是可以一个大物料分成两个部分拍照,并且能准确测量出结果。有些时候机构的限制或者拍照视野要求太大,我们就可以采用多相机拍照的方案。这种需求,可以用下面的思路来完成标定:用2个已经标定过的相机拍摄同一个标定板,建立一个世界坐标系用九点标定获取世界坐标系,2个相机执行2次九点标定操作或者,也可以参考下面的例子中的办法:下面这个例子的功能是:两个相机,各拍卡尺的...
2020-06-10 21:33:49
halcon19示例程序中,有好几个测量卡尺的例子中,下面的代码报错:try
read_cam_par ('camera_parameters.dat', CamParam)
catch (Exception)
* run 'camera_calibration_internal.hdev' first to generate camera...
2020-06-10 15:52:25
surface_normals_object_model_3d( : : ObjectModel3D, Method, GenParamName, GenParamValue : ObjectModel3DNormals)计算三维物体模型的三维曲面法线输入:ObjectModel3D (input_control)包含3D点数据的3D对象模型句柄。Method(input_control)法线计算...