注释的HALCON的标定校正程序
halcon标定后畸变校正与测量

halcon标定后畸变校正与测量这是⼀个很久以前的微博⽹友写的,现在的halcon运⾏有问题,因为已经没有parameters_image_to_world_plane_centered这个函数了,知道现在版本替换它的函数的朋友⿇烦告知⼀下,万分感谢本⽂出处:/s/blog_442bfe0e0100yjce.html#commonComment1.get_image_size( : : : , )返回图像的尺⼨。
2.parameters_image_to_world_plane_centered (CamParam, Pose, CenterRow, CenterCol, WidthMappedImage, HeightMappedImage, ScaleForCenteredImage, PoseForCenteredImage)Halcon内部程序,输出为图像的⽐率和姿态。
3.gen_image_to_world_plane_map( : : , , , , , , , : )产⽣⼀个投影映射,该映射描述图像平⾯与Z=O的世界平⾯之间的关系,输出为图像MAP,是⼀个多通道的图像包含了映射数据。
4.map_image(, : : : )利⽤映射变换校正图像,输出为矫正后的图像。
5.image_to_world_plane( : : , , , , , : )把校正后的图像转换到Z=0的世界平⾯。
6.image_points_to_world_plane( : : , , , , : , )把图像上的点转换到Z=0的世界平⾯,输出为点坐标。
* This program provides procedures for the determination of the* parameters Pose and Scale of the operators image_to_world_plane* and gen_image_to_world_plane_map.** Read the imageImgPath := '3d_machine_vision/calib/'read_image (Image, ImgPath+'caliper_01')* Set the camera parameters for the imageCamParam := [0.0160728,-631.843,7.40077e-006,7.4e-006,326.369,246.785,652,494]Pose := [-41.2272,26.763,398.682,359.655,359.202,322.648,0]* Reopen the window appropriatelyget_image_size (Image, WidthOriginalImage, HeightOriginalImage)dev_open_window_fit_image (Image, 0, 0, WidthOriginalImage, HeightOriginalImage, WindowHandle)set_display_font (WindowHandle, 14, 'mono', 'true', 'false')dev_set_color ('red')WidthMappedImage := 652HeightMappedImage := 494* Transform the image such that a given point appears in the* center of the rectified image and the the scale of the rectified image* is similar to the scale of the original image (in the surroundings* of the given point)* Define the point that will appear in the center of the rectified imagedev_display (Image)disp_message (WindowHandle, 'Define the center of the mapped image', 'window', 12, 12, 'white', 'false')get_mbutton (WindowHandle, CenterRow, CenterCol, Button)* Determine scale and pose such that the given point appears* in the center of the rectified image and that the* scale of the two images is similar (in the surroundings* of the given point).parameters_image_to_world_plane_centered (CamParam, Pose, CenterRow, CenterCol, WidthMappedImage, HeightMappedImage, ScaleForCenteredImage, PoseForCenteredImage)* Rectify the imagegen_image_to_world_plane_map (Map, CamParam, PoseForCenteredImage, WidthOriginalImage, HeightOriginalImage, WidthMappedImage, HeightMappedImage, ScaleForCenteredImage, 'bilinear')map_image (Image, Map, ImageMapped)dev_open_window_fit_image (ImageMapped, 0, 0, WidthMappedImage, HeightMappedImage, WindowHandleMapped)set_display_font (WindowHandleMapped, 14, 'mono', 'true', 'false')dev_set_color ('red')dev_display (ImageMapped)* In case, only one image has to be mapped, the operator* image_to_world_plane can be used instead of the operators* gen_image_to_world_plane_map together with map_image.image_to_world_plane (Image, ImageMapped, CamParam, PoseForCenteredImage, WidthMappedImage, HeightMappedImage, ScaleForCenteredImage, 'bilinear')* Display the center pointimage_points_to_world_plane (CamParam, PoseForCenteredImage, CenterRow, CenterCol, ScaleForCenteredImage, CenterX, CenterY) disp_cross (WindowHandleMapped, CenterY, CenterX, 6, rad(45))disp_message (WindowHandleMapped, 'The selected point appears in the center', 'window', 12, 12, 'white', 'false')disp_message (WindowHandleMapped, 'of the rectified image', 'window', 36, 12, 'white', 'false')disp_continue_message (WindowHandleMapped, 'black', 'true')stop ()** Now determine scale and pose such that the entire image* fits into the rectified image.parameters_image_to_world_plane_entire (Image, CamParam, Pose, WidthMappedImage, HeightMappedImage, ScaleForEntireImage, PoseForEntireImage)* Rectify the imageimage_to_world_plane (Image, ImageMapped, CamParam, PoseForEntireImage, WidthMappedImage, HeightMappedImage, ScaleForEntireImage, 'bilinear')dev_clear_window ()dev_display (ImageMapped)disp_message (WindowHandleMapped, 'The entire image is visible in the rectified image', 'window', -1, -1, 'white', 'false')。
halcon 任意畸变校正方法

随着计算机视觉技术的不断发展,图像处理在各个领域的应用也越来越广泛。
在图像处理中,由于各种因素的影响,图像中常常会出现各种畸变,例如径向畸变、切向畸变等。
畸变的存在会严重影响图像的质量和后续的图像处理和分析。
畸变校正成为了图像处理中一个重要的环节。
在图像处理中,halcon软件提供了多种畸变校正的方法,可以根据实际情况选择合适的方法来进行畸变校正。
下面将介绍halcon软件中常用的几种畸变校正方法:1. 标定畸变系数:标定畸变系数是一种常用的畸变校正方法,它通过对相机进行标定,获取相机的畸变系数,然后利用这些畸变系数对图像进行校正。
这种方法的优点是校正效果好,缺点是需要事先标定相机,工作量较大。
2. 几何畸变校正:几何畸变校正是一种通过几何变换的方法来进行畸变校正的技术。
它通过对图像进行仿射变换、透视变换等几何变换操作,来消除图像中的畸变。
这种方法的优点是计算量较小,缺点是校正效果受到几何变换的限制。
3. 网格畸变校正:网格畸变校正是一种通过将图像划分成网格,然后对每个网格进行畸变校正的方法。
它通过对每个网格进行局部的校正操作,来消除图像中的畸变。
这种方法的优点是校正效果较好,缺点是计算量较大。
除了以上介绍的几种畸变校正方法之外,halcon软件还提供了其他一些畸变校正方法,例如图像配准、棋盘格校正等。
在实际应用中,可以根据具体情况选择合适的畸变校正方法来进行图像处理。
畸变校正是图像处理中一个重要的环节,halcon软件提供了多种畸变校正的方法,可以根据实际情况选择合适的方法来进行畸变校正。
希望通过本文的介绍,能够帮助大家更好地理解和应用畸变校正技术。
畸变校正在计算机视觉和图像处理领域中起着至关重要的作用。
无论是工业检测中的零件定位、医学影像中的疾病诊断,还是无人驾驶汽车中的环境感知,都需要对图像中的畸变进行有效的校正,以确保后续的图像处理和分析工作能够准确、可靠地进行。
在实际应用中,由于不同场景和设备的差异,图像中的畸变也呈现出多样化的特点。
halcon自标定方法

halcon自标定方法Halcon自标定方法Halcon是一种常用的机器视觉软件,用于开发和实现各种图像处理和机器视觉应用。
在机器视觉领域,相机的标定是非常重要的一步,它能够精确地确定相机的内部参数和外部参数,从而提高图像处理的精度和准确性。
Halcon提供了自标定方法,使相机的标定过程更加简便和高效。
自标定方法基于相机的特征点,通过在图像中检测和匹配特征点来确定相机的内部参数和外部参数。
下面将详细介绍Halcon的自标定方法。
1. 特征点提取在自标定过程中,首先需要从图像中提取特征点。
Halcon提供了多种特征点提取算法,如Harris角点检测、SIFT算法等。
根据实际应用场景的需求,选择合适的算法进行特征点提取。
2. 特征点匹配特征点提取后,需要进行特征点的匹配。
Halcon提供了多种特征点匹配算法,如基于描述子的匹配算法、基于相似性变换的匹配算法等。
通过计算特征点之间的相似性,确定它们之间的对应关系。
3. 相机标定特征点匹配完成后,即可进行相机的标定。
Halcon提供了基于特征点的标定方法,通过求解相机的内部参数和外部参数,得到相机的准确标定结果。
标定过程中需要提供已知的标定板,通过测量标定板上的特征点坐标和图像中对应特征点的像素坐标,计算相机的内部参数和外部参数。
4. 标定结果评估标定过程完成后,需要对标定结果进行评估。
Halcon提供了多种评估方法,如重投影误差、畸变系数等。
通过对比实际观测值和标定结果的差异,评估标定的准确性和精度。
5. 标定结果应用标定结果可以应用于各种机器视觉应用中,如图像校正、目标检测和跟踪等。
通过应用标定结果,可以提高图像处理和机器视觉算法的准确性和稳定性。
总结:Halcon的自标定方法是一种简便高效的相机标定方法,通过特征点提取和匹配,求解相机的内部参数和外部参数,从而实现对相机的准确标定。
标定结果可以应用于各种机器视觉应用中,提高图像处理和算法的准确性和稳定性。
halcon九点标定例程

halcon九点标定例程【原创版】目录1.介绍 halcon 九点标定例程2.详述 halcon 九点标定的具体步骤3.分析 halcon 九点标定的优点与不足4.总结 halcon 九点标定例程的重要性正文一、介绍 halcon 九点标定例程Halcon 九点标定例程是工业自动化领域中常用的一种标定方法,主要用于精确测量物体的尺寸和位置。
该方法通过在一个平面上选取九个特征点,然后利用特定的算法对这些特征点进行处理,从而实现对物体的精确测量。
这种方法具有操作简便、精度高、抗干扰能力强等优点,因此在工业生产中得到了广泛的应用。
二、详述 halcon 九点标定的具体步骤1.准备工作:首先,需要确保相机、光源等硬件设备已经正确安装并正常运行。
此外,还需要选择合适的标定板(通常为正方形,上面印有九个特征点),并将其放置在相机可拍摄的范围内。
2.拍摄照片:在确保标定板放置正确的情况下,启动相机拍摄包含九个特征点的照片。
需要注意的是,拍摄时需要保证光线充足、照片清晰,以确保后续处理效果。
3.特征点提取:通过图像处理软件(如 Halcon)对拍摄到的照片进行处理,提取出九个特征点。
这一步通常包括边缘检测、轮廓提取、特征点筛选等操作。
4.建立坐标系:在照片上选取一个点作为原点,然后利用相机的内参数(如焦距、像素尺寸等)和已知的物距(即特征点到相机的距离),计算出其他特征点在三维空间中的坐标。
这样,就建立了一个以原点为基准的二维坐标系。
5.计算相机参数:通过九点标定算法,计算出相机的外参数(如旋转矩阵、平移矩阵等),从而实现对物体在三维空间中的精确定位。
三、分析 halcon 九点标定的优点与不足1.优点:(1)操作简便:九点标定方法所需设备和操作步骤较为简单,易于上手。
(2)精度高:该方法利用多个特征点进行标定,提高了测量的精度和可靠性。
(3)抗干扰能力强:九点标定方法对光照、摄像头晃动等干扰因素具有较强的抗干扰能力。
Halcon-双目视觉系统标定

Halcon-双目视觉系统标定1.get_image_pointer1(Image: : : Pointer, Type, Width, Height)返回第一通道的点,图像数据类型,图像尺寸。
2.disp_image(Image : : WindowHandle : )在输出窗口显示灰度图像3.visualize_results_of_find_marks_and_pose (ImageL, WindowHandle1, RCoordL, CCoordL, StartPoseL, StartCamParL)内部函数,显示初步标定的坐标系和MARKS中心,MARKS中线用十字线标出。
4.set_calib_data_observ_points( : : CalibDataID, CameraIdx, CalibObjIdx, CalibObjPoseIdx, Row, Column, Index, Pose : ) 储存以点为基础的标定观测值,将观测值储存与标定数据句柄中。
5.calibrate_cameras( : : CalibDataID : Error)根据标定数据模型中的值标定摄像机。
6.get_calib_data( : : CalibDataID, ItemType, ItemIdx, DataName : DataValue)查询储存或计算得到的标定模型中的数据。
7.write_cam_par( : : CameraParam, CamParFile : )把相机内参数写入TXT文件8.write_pose( : : Pose, PoseFile : )把相机的位姿写入TXT文件9.gen_binocular_rectification_map( : Map1, Map2: CamParam1, CamParam2, RelPose, SubSampling, Method, MapType: CamParamRect1, CamParamRect2, CamPoseRect1, CamPoseRect2, RelPoseRect)把相机参数和姿态作为输入,输出为校正图像和矫正后的参数和姿态。
halcon2d畸变校正例程

halcon2d畸变校正例程
Halcon是一种用于机器视觉应用的强大工具,它提供了丰富的
图像处理功能。
在Halcon中,畸变校正是一个重要的图像处理任务,用于校正由于摄像头镜头畸变而引起的图像失真。
畸变校正例程通
常包括以下步骤:
1. 相机标定,首先需要进行相机标定,以获取相机的内部参数(如焦距、主点偏移)和外部参数(如相机的位置和方向)。
Halcon提供了相机标定工具,可以通过拍摄特定的校准板来获取相
机参数。
2. 畸变参数计算,根据相机标定得到的参数,可以计算出畸变
矫正所需的畸变参数。
Halcon提供了相应的函数来进行畸变参数的
计算。
3. 图像畸变校正,一旦获得了畸变参数,就可以使用Halcon
的畸变校正例程对图像进行校正。
这通常涉及到对图像进行透视变换,以消除由于畸变引起的图像失真。
总的来说,畸变校正例程在Halcon中涉及到相机标定、畸变参
数计算和图像校正三个主要步骤。
通过合理使用Halcon提供的函数和工具,可以实现对图像畸变的有效校正。
希望这个回答能够帮助你理解Halcon中的畸变校正例程。
halcon deep learning tool 标注工具用法

halcon deep learning tool 标注工具用法Halcon深度学习工具标注工具的使用方法导语:Halcon是一款强大的机器视觉开发工具,它具备丰富的功能和灵活的部署选项。
其中,Halcon的深度学习工具是其功能之一,可以用于目标检测、图像分类、语义分割等任务。
在深度学习任务中,数据标注是非常重要的一步,本文将介绍Halcon深度学习工具中的标注功能的使用方法。
第一步:数据准备和导入在使用Halcon深度学习工具进行标注之前,我们需要准备好待标注的数据。
首先,我们需要将图像和标注信息存放在指定的文件夹中。
图像可以是常见的图像格式,如JPEG、PNG等,标注信息则可以是XML、CSV 等格式。
为了方便管理和导入,我们可以将每个样本的图像和标注信息保存在同一个文件夹中,并按照一定的目录结构组织起来。
接下来,我们可以使用Halcon的图像组件来导入数据。
在Halcon中,可以使用read_image函数来读取图像,并使用read_region_points函数来读取标注信息。
我们可以使用一个循环来遍历所有的样本,逐个读取图像和标注信息,并将其存储在相应的数据结构中。
第二步:创建标注工具在数据准备完毕后,我们可以开始使用Halcon的标注工具进行标注了。
首先,我们需要创建一个标注工具,用于展示图像和标注信息,并提供相应的标注功能。
在Halcon中,可以使用create_annotation_object函数来创建标注工具,并设置相关的参数,如图像窗口的大小、标注工具的名称等。
创建标注工具后,我们需要设置相关的显示参数。
我们可以使用set_display_font函数设置标注字体的大小和颜色,使用set_display_shape函数设置标注框的颜色和线宽,以及使用set_line_width函数设置标注线的宽度等。
这些参数的设置可以根据具体的需求进行调整。
第三步:绑定标注工具和数据在创建标注工具后,我们需要将其与待标注的数据绑定起来。
Halcon算子笔记3_相机标定+矫正图像

Map_image.hdev: 矫正图像*关闭窗口dev_close_window ()dev_close_window ()*打开指定大小、颜色背景的窗口dev_open_window (0, 0, 768/2, 576/2, 'black', WindowHandle1)dev_update_pc ('off')dev_update_window ('off')dev_update_var ('off')dev_update_time ('off')dev_set_draw ('margin')dev_set_line_width (3)** Calibrate the camera.(标定相机)步骤一** 标定板描述文件CaltabName := 'caltab_big.descr'* make sure that the file 'CaltabDescrName' is in the current directory,* the HALCONROOT/calib directory, or use an absolut path*初始相机参数:焦距、畸变系数Kappa,Sx,Sy,Cx,Cy,ImageWidth,ImageHeight StartCamPar := [0.008,0,0.0000086,0.0000086,384,288,768,576]*物体在空间坐标系中的位姿数组NStartPose := []*行角点数组NRow := []*列角点数组NCol := []*X、Y、Z从标定表文件获取计算值caltab_points (CaltabName, X, Y, Z)*创建空的图像元组gen_empty_obj (Images)*图像的数目NumImages := 10*接下来for循环,依次读取、处理NumImages张图像for I := 1 to NumImages by 1*读取图像:Image得到图像数据read_image (Image, 'calib/calib-3d-coord-'+I$'02d')*将单个Image加入元组Images中concat_obj (Images, Image, Images)*显示Imagedev_display (Image)*在图像中找到标定板的区域:图像,标定板描述文件,滤波核大小,二值化值find_caltab (Image, Caltab, CaltabName, 3, 112, 5)*设置区域颜色:绿色dev_set_color ('green')*显示图像中标定板的区域dev_display (Caltab)*(核心函数:搜寻图像的原始点)在图像中找到标定板的各个角点坐标和初始位姿find_marks_and_pose (Image, Caltab, CaltabName, StartCamPar, 128, 10, 18, 0.9, 15, 100, RCoord, CCoord, StartPose)*设置颜色:红色dev_set_color ('red')*在窗口上圆形标记角点的位置disp_circle (WindowHandle1, RCoord, CCoord, gen_tuple_const(|RCoord|,1.5))*一个图像位姿加入位姿元组NStartPose := [NStartPose,StartPose]*所有图像角点行坐标数组相连NRow := [NRow,RCoord]*所有图像角点列坐标数组相连NCol := [NCol,CCoord]endfordev_update_time ('on')disp_continue_message (WindowHandle1, 'black', 'true')stop ()** Calculate the mapping.(计算带矫正信息的图像)步骤二**(核心函数)标定相机参数,对步骤一的数据进行计算处理camera_calibration (X, Y, Z, NRow, NCol, StartCamPar, NStartPose, 'all', CamParam, NFinalPose, Errors)*生成空的对象:包含矫正映射信息的图像gen_empty_obj (Maps)*for循环一次处理一组对应的图像for NumImage := 1 to NumImages by 1* Obtain the pose of the calibration table.*获取标定出来的位姿3DPose := NFinalPose[(NumImage-1)*7:(NumImage-1)*7+6]*设置新的原始3D位姿set_origin_pose (Pose, -1.125, -1.0, 0, PoseNewOrigin)*(核心函数)生成带矫正映射信息的图像MapSinglegen_image_to_world_plane_map (MapSingle, CamParam, PoseNewOrigin, 768, 576, 900, 800, 0.0025, 'bilinear')*将单张图像加入图像元组Mapsconcat_obj (Maps, MapSingle, Maps)endfordisp_continue_message (WindowHandle1, 'black', 'true')stop ()*代码到此处:有了NumImages张标定的原图+ NumImages张带矫正映射信息的图像,*接下来While循环,一张一张的矫正图像** Map the images.(矫正图像)步骤三**窗口设置dev_open_window (0, 391, 900/2, 800/2, 'black', WindowHandle2)Button := 0NumImage := 1while (Button # 1)dev_set_window (WindowHandle1)dev_set_part (0, 0, 575, 767)dev_clear_window ()*从图像元组中选择一张图像select_obj (Images, Image, NumImage)*显示选择的图像dev_display (Image)disp_message (WindowHandle1, 'Press any mouse button to stop', 'image', -1, -1, 'black', 'true')*选择对应位置的带矫正信息的图像select_obj (Maps, MapSingle, NumImage)*(核心函数)矫正图像:原图,带矫正信息图,矫正结果图map_image (Image, MapSingle, ImageMapped)*以下为窗口、循环之类的处理,与图像处理没什么关系dev_set_window (WindowHandle2)dev_set_part (0, 0, 799, 899)dev_clear_window ()dev_display (ImageMapped)NumImage := NumImage + 1if (NumImage > NumImages)NumImage := 1endifdev_error_var (Error, 1)dev_set_check ('~give_error')get_mposition (WindowHandle1, R, C, Button)dev_error_var (Error, 0)dev_set_check ('give_error')if (Error#H_MSG_TRUE)Button := 0endifif (Button)breakendifendwhiledev_set_window (WindowHandle2) dev_close_window ()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
注释的HALCON的程序
时间:2015-11-12 13:25:58阅读:4评论:0收藏:0[点我收藏+]标签:des si代码it la sp文件数据ha
*关闭窗口
dev_close_window ()
dev_close_window ()
*打开指定大小、颜色背景的窗口
dev_open_window (0, 0, 768/2, 576/2, ‘black‘, WindowHandle1)
dev_update_pc (‘off‘)
dev_update_window (‘off‘)
dev_update_var (‘off‘)
dev_update_time (‘off‘)
dev_set_draw (‘margin‘)
dev_set_line_width (3)
*
* Calibrate the camera.(标定相机)步骤一
*
* 标定板描述文件
CaltabName := ‘caltab_big.descr‘
* make sure that the file ‘CaltabDescrName‘ is in the current directory,
* the HALCONROOT/calib directory, or use an absolut path
*初始相机参数:焦距、畸变系数Kappa,Sx,Sy,Cx,Cy,ImageWidth,ImageHeight StartCamPar := [0.008,0,0.0000086,0.0000086,384,288,768,576]
*物体在空间坐标系中的位姿数组
NStartPose := []
*行角点数组
NRow := []
*列角点数组
NCol := []
*X、Y、Z从标定表文件获取计算值
caltab_points (CaltabName, X, Y, Z)
*创建空的图像元组
gen_empty_obj (Images)
*图像的数目
NumImages := 10
*接下来for循环,依次读取、处理NumImages张图像
for I := 1 to NumImages by 1
*读取图像:Image得到图像数据
read_image (Image, ‘calib/calib-3d-coord-‘+I$‘02d‘)
*将单个Image加入元组Images中
concat_obj (Images, Image, Images)
*显示Image dev_display (Image) *在图像中找到标定板的区域:图像,标定板描述文件,滤波核大小,二值化值
find_caltab (Image, Caltab, CaltabName, 3, 112, 5)
*设置区域颜色:绿色
dev_set_color (‘green‘)
*显示图像中标定板的区域
dev_display (Caltab)
*(核心函数:搜寻图像的原始点)在图像中找到标定板的各个角点坐标和初始位姿
find_marks_and_pose (Image, Caltab, CaltabName, StartCamPar, 128, 10, 18, 0.9, 15, 100, RCoord, CCoord, StartPose)
*设置颜色:红色
dev_set_color (‘red‘)
*在窗口上圆形标记角点的位置
disp_circle (WindowHandle1, RCoord, CCoord, gen_tuple_const(|RCoord|,1.5))
*一个图像位姿加入位姿元组
NStartPose := [NStartPose,StartPose]
*所有图像角点行坐标数组相连
NRow := [NRow,RCoord]
*所有图像角点列坐标数组相连
NCol := [NCol,CCoord]
endfor
dev_update_time (‘on‘)
disp_continue_message (WindowHandle1, ‘black‘, ‘true‘)
stop ()
*
* Calculate the mapping.(计算带矫正信息的图像)步骤二
*
*(核心函数)标定相机参数,对步骤一的数据进行计算处理
camera_calibration (X, Y, Z, NRow, NCol, StartCamPar, NStartPose, ‘all‘, CamParam, NFinalPose, Errors)
*生成空的对象:包含矫正映射信息的图像
gen_empty_obj (Maps)
*for循环一次处理一组对应的图像
for NumImage := 1 to NumImages by 1
* Obtain the pose of the calibration table.
*获取标定出来的位姿3D
Pose := NFinalPose[(NumImage-1)*7:(NumImage-1)*7+6]
*设置新的原始3D位姿
set_origin_pose (Pose, -1.125, -1.0, 0, PoseNewOrigin)
*(核心函数)生成带矫正映射信息的图像MapSingle
gen_image_to_world_plane_map (MapSingle, CamParam, PoseNewOrigin, 768, 576, 900, 800, 0.0025, ‘bilinear‘)
*将单张图像加入图像元组Maps
concat_obj (Maps, MapSingle, Maps)
endfor
disp_continue_message (WindowHandle1, ‘black‘, ‘true‘)
stop ()
*代码到此处:有了NumImages张标定的原图+ NumImages张带矫正映射信息的图像, *接下来While循环,一张一张的矫正图像
*
* Map the images.(矫正图像)步骤三
*
*窗口设置
dev_open_window (0, 391, 900/2, 800/2, ‘black‘, WindowHandle2)
Button := 0
NumImage := 1
while (Button # 1)
dev_set_window (WindowHandle1)
dev_set_part (0, 0, 575, 767)
dev_clear_window ()
*从图像元组中选择一张图像
select_obj (Images, Image, NumImage)
*显示选择的图像
dev_display (Image)
disp_message (WindowHandle1, ‘Press any mouse button to stop‘, ‘image‘, -1, -1, ‘black‘, ‘true‘)
*选择对应位置的带矫正信息的图像
select_obj (Maps, MapSingle, NumImage)
*(核心函数)矫正图像:原图,带矫正信息图,矫正结果图map_image (Image, MapSingle, ImageMapped)
*以下为窗口、循环之类的处理,与图像处理没什么关系dev_set_window (WindowHandle2)
dev_set_part (0, 0, 799, 899)
dev_clear_window ()
dev_display (ImageMapped)
NumImage := NumImage + 1
if (NumImage > NumImages)
NumImage := 1
endif
dev_error_var (Error, 1)
dev_set_check (‘~give_error‘)
get_mposition (WindowHandle1, R, C, Button)
dev_error_var (Error, 0)
dev_set_check (‘give_error‘)
if (Error#H_MSG_TRUE)
Button := 0
endif
if (Button)
break
endif
endwhile
dev_set_window (WindowHandle2) dev_close_window ()
注释的HALCON的程序。