我们知道,Halcon中的坐标系的原点在左上角,而一般二维平面坐标系的原点在左下角。那么Halcon中坐标系和一般的二维坐标系有什么区别你?我通过下面这个例子来分析。
1 gen_image_const (Image, ‘byte‘, 512, 512) 2 dev_set_draw (‘margin‘) 3 4 *点1 5 gen_circle (Circle1, 10, 10, 3) 6 disp_message (3600, ‘(10 ,10)‘, ‘image‘, 2, 18, ‘white‘, ‘false‘) 7 *点2 8 gen_circle (Circle2, 100, 200, 3) 9 disp_message (3600, ‘(100 ,200)‘, ‘image‘, 92, 208, ‘white‘, ‘false‘) 10 *点3 11 gen_circle (Circle3, 400, 100, 3) 12 disp_message (3600, ‘(400 ,100)‘, ‘image‘, 392, 108, ‘white‘, ‘false‘) 13 14 union2 (Circle1,Circle2, RegionUnion) 15 union2 (RegionUnion,Circle2, RegionUnion) 16 union2 (RegionUnion,Circle3, RegionUnion) 17 gen_contour_region_xld (RegionUnion, Contours, ‘border‘) 18 write_contour_xld_dxf (Contours,‘C:/Users/happy xia/Desktop/XLD的镜像变换/threePoint.dxf‘)
这三个点在Halcon中的位置如下图:
上面的程序最终生成了一个名为threePoint.dxf的文件。我用文本查看器(notepad++、记事本等)打开查看它的数据:
红框中“10”下面的数据代表点的x值,“20”下面的数据代表点的y值,即截图里有两个点(98.5, 396.5)、(99.5, 396.5),这两个点都是XLD圆上的点,很明显这两个点所在圆的圆心坐标是(100, 400)。但是我们看最开始的那张图,发现只有点(400, 100),并没有点(100, 400)!
根据上面的事实现象,我们不难发现Halcon中的坐标系实际是这样的:
根据导出的dxf文件中的坐标点反推,之前的那张图的坐标实际上是这样的:
这两个坐标系的区别如下图。不难看出,它们是上下镜像的关系。
时间: 2024-12-22 04:59:18