Halcon学习笔记:Halcon标定步骤-3d_coordinates.hdev示例

Halcon标定步骤

1.设置相机内部参数的初始值

StartCamPar := [0.016,0,0.0000074,0.0000074,326,247,652,494]
set_calib_data_cam_param (CalibDataID, 0, ‘area_scan_division’, StartCamPar)

1.1 相机型号

  • (1)面阵
  • (2)线阵

1.2 参数设置(这里只讲面阵相机)

  • (1)Division 畸变模型
    CameraParam:[Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]
  • (2)Polynomial 畸变模型
    CameraParam:[Focus, K1, K2, K3, P1, P2, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]
    注:当镜头为远心镜头时,Focus=0;

1.3 畸变类型的选择

  • Division 畸变模型只适用于精度要求不是很高,标定图片数量较少的情况;Polynomial 畸变模型对镜像
    畸变和切向畸变都校正,精度较高,花费时间长。

1.4 标定时个参数值的确定技巧

  • Focus f:镜头的标称焦距,( e.g, 0.016 m; 对于远心镜头为0。)
  • κ: 一般去0.0

Or:

  • K1, K2, K3,P1, P2:可全部初始化为0

  • Sx: 由CCD\CMOS确定建议取值如下:
    Full image (640480) Subsampling (320240)
    1/3"-Chip 0.0000055 m 0.0000110 m
    1/2"-Chip 0.0000086 m 0.0000172 m
    2/3"-Chip 0.0000110 m 0.0000220 m

  • Sy: 由CCD\CMOS确定建议取值如下:
    for example:
    Full image (640480) Subsampling (320240)
    1/3"-Chip 0.0000055 m 0.0000110 m
    1/2"-Chip 0.0000086 m 0.0000172 m
    2/3"-Chip 0.0000110 m 0.0000220 m

  • Cx and Cy: 光心坐标初始值,建议取值如下:
    for example:
    Full image (640480) Subsampling (320240)
    Cx 320.0 160.0
    Cy 240.0 120.0

  • ImageWidth,ImageHeight:有实际图片大小来初始化该值
    for example:
    Full image (640480) Subsampling (320240)
    ImageWidth 640 320
    ImageHeight 480 240

2.标定板初始化

    CaltabName := 'caltab_30mm.descr'//标定板描述文件set_calib_data_calib_object (CalibDataID, 0, CaltabName)

3.创建数据模型

	create_calib_data ('calibration_object', 1, 1, CalibDataID)

4.获取标定图片

相机拍摄不同位姿下图片8-15张,拍摄图片时标定板尽量覆盖整个视场(标定板要根据工作距离、视场大小定制);拍摄图片上的圆直径不得小于10个像素

#### 5.加载所有图像,寻找标定板区域,确定圆心,将结果加载到组元中
for I := 1 to NumImages by 1
... acquire image ...(获取图像)
find_caltab (Image, Caltab, CaltabName, SizeGauss, MarkThresh, MinDiamMarks)
find_marks_and_pose (Image, Caltab, CaltabName, StartCamPar, StartThresh, \DeltaThresh, MinThresh, Alpha, MinContLength, MaxDiamMarks, RCoord, CCoord, StartPose)// 从标定数据模型中获取基于点的观测数据(49个点的坐标,索引,粗略估计被测校准物体相对于被测相机的姿态)
set_calib_data_observ_points (CalibDataID, 0, 0, I, RCoord, CCoord, 'all', StartPose)
endfor

下面将Halcon中提取目标点的大致原理说一下:

  • 首先find_caltab 算子对图像高斯滤波(核大小为SizeGauss),接着阈值分割(与之大小为MarkThresh)将标定板的区域找出来, find_marks_and_pose 算子对区域中的圆进行分割,找到圆的个数,周长,坐标位置等应该和标定板描述文件中的一致,否则会自动调整StartThresh,使得StartThresh按照DeltaThresh步长减小到MinThresh,直到找到准确的圆心。

6.有了所有图像中的圆心就可以标定了

* 返回平均投影误差Errorscalibrate_cameras (CalibDataID, Errors)

7.示例:3d_coordinates 测量世界坐标中的倾斜物体

本地函数: get_measure_positions
(Image : PlateRegion : CalibDataID, PoseIndex : Distance, Phi, RowCenter, ColumnCenter)

** 提取标定板(二值化、计算连通量、利用形状特征选择区域,填充空洞)
* 形状特征有:每个连通区域的孔数;最小包围矩形长度的一半;最小的包围矩形的宽度的一半
threshold (Image, Region, 0, 120)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ['holes_num','rect2_len1','rect2_len2'], 'and', [1,120,120], [1,200,200])
fill_up (SelectedRegions, PlateRegion)
*
** 从table(标定板表盘)的边框构造测量矩形:
* 生成区域XLD轮廓
* 计算XLD轮廓的“回归线”的参数
gen_contour_region_xld (PlateRegion, Contours, 'center')
segment_contours_xld (Contours, ContoursSplit, 'lines', 7, 4, 2)
regress_contours_xld (ContoursSplit, RegressContours, 'no', 1)
* 获取两边的垂直边框线(42)
select_contours_xld (RegressContours, VerticalContours, 'direction', rad(45), rad(135), -0.5, 0.5)
select_contours_xld (VerticalContours, LongContours, 'length', 150, 500, -0.5, 0.5)
*
** 测量线由table的两个垂直边框线的中心点构成:
* 从对象数组中的选择对象(21* 获得XLD轮廓所有坐标
select_obj (LongContours, Contour, 1)
get_contour_xld (Contour, Rows, Columns)
RowBegin1 := Rows[0]
ColBegin1 := Columns[0]
RowEnd1 := Rows[|Rows| - 1]
ColEnd1 := Columns[|Columns| - 1]
select_obj (LongContours, Contour, 2)
get_contour_xld (Contour, Rows, Columns)
RowBegin2 := Rows[0]
ColBegin2 := Columns[0]
RowEnd2 := Rows[|Rows| - 1]
ColEnd2 := Columns[|Columns| - 1]
*
** 现在在图像中进行实际测量:
*从标定数据模型中获取基于点的观测数据(第21个点和第28个点的坐标)
get_calib_data_observ_points (CalibDataID, 0, 0, PoseIndex - 1, Row, Column, PoseIndex, _Pose)
Row1 := Row[find(PoseIndex,21)]
Row2 := Row[find(PoseIndex,27)]
Column1 := Column[find(PoseIndex,21)]
Column2 := Column[find(PoseIndex,27)]
* 计算两条直线的交点(边框垂直边和标定板第21个点和第28个点的连接线的角点)
* 计算两个点的距离
* 直线的方向
intersection_lines (Row1, Column1, Row2, Column2, RowBegin1, ColBegin1, RowEnd1, ColEnd1, RowA, ColA, IsOverlapping)
intersection_lines (Row1, Column1, Row2, Column2, RowBegin2, ColBegin2, RowEnd2, ColEnd2, RowB, ColB, IsOverlapping)
distance_pp (RowA, ColA, RowB, ColB, Distance)
line_orientation (RowA, ColA, RowB, ColB, Phi)
RowCenter := (RowA + RowB) / 2
ColumnCenter := (ColA + ColB) / 2
return ()

主函数 main

* 
* 1.初始化程序
dev_close_window ()
dev_open_window (0, 0, 768, 576, 'black', WindowHandle)
dev_update_off ()
dev_set_draw ('margin')
dev_set_line_width (3)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
* 
* 2.标定相机
* 为一个区域扫描相机生成一个相机参数数组,该参数数组设置为面阵相机的Division畸变模型模板:
* CameraParam:[Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]
CalTabDescrFile := 'caltab_big.descr'
gen_cam_par_area_scan_division (0.008, 0, 0.0000086, 0.0000086, 384, 288, 768, 576, StartCamPar)
* 创建haclon 标定数据模型('calibration_object'为标定设置类型,CalibDataID 数据模型的句柄 )
* 在标定数据模型中设置相机的类型和初始参数(StartCamPar 为初始参数)
* 定义在标定模型中的标定对象(CalTabDescrFile 描述文件名)
create_calib_data ('calibration_object', 1, 1, CalibDataID)
set_calib_data_cam_param (CalibDataID, 0, [], StartCamPar)
set_calib_data_calib_object (CalibDataID, 0, CalTabDescrFile)
*
* 3.采图
NumImages := 10
for I := 1 to NumImages by 1read_image (Image, 'calib/calib-3d-coord-' + I$'02d')dev_display (Image)Message := 'Find calibration plate in\nall calibration images (' + I + '/' + NumImages + ')'disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
***** 找到halcon 标定板,并在标定数据模型中设置提取的点和轮廓 ******find_calib_object (Image, CalibDataID, 0, 0, I - 1, [], [])* 从标定数据模型中查询存储或计算的数据(O号相机数据,项目类型-'init_params'表示初始相机内部参数,StartCamPar 初始化数据)* 从标定数据模型中获取基于点的观测数据(49个点的坐标,索引,粗略估计“被测校准物体(标定板)”相对于被测相机的姿态)* 从校准数据模型中获取基于轮廓的观测数据(标定板轮廓,所观察到的校准对象位姿的索引)get_calib_data (CalibDataID, 'camera', 0, 'init_params', StartCamPar)get_calib_data_observ_points (CalibDataID, 0, 0, I - 1, Row, Column, Index, Pose)get_calib_data_observ_contours (Contours, CalibDataID, 'caltab', 0, 0, I - 1)* 标出圆形坐标点-画叉gen_cross_contour_xld (Cross, Row, Column, 6, 0.785398)dev_set_color ('green')dev_display (Contours)dev_set_color ('yellow')dev_display (Cross)
endfor
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
*
*** 通过同时最小化处理 确定所有相机参数(Error:优化的反投影均方根误差(RMSE)***
calibrate_cameras (CalibDataID, Error)
* 从标定数据模型中查询存储或计算的数据(0号相机的数据,项目类型-'params'表示优化后的相机内部参数,CamParam 输出数据)
get_calib_data (CalibDataID, 'camera', 0, 'params', CamParam)
* 
******** 4.Perform measurements 验证(1D 尺寸测量) ********
* 
for I := 1 to NumImages by 1read_image (Image, 'calib/calib-3d-coord-' + I$'02d')* ** 一、现在,测量标定板的黑边的长度:* I-索引号; PlateRegion-标定板区域;Distance-垂直边框的距离;* Phi-公垂线的方向;RowCenter/ColumnCenter-table中心点坐标;* 生成一个矩形的XLD轮廓。get_measure_positions (Image, PlateRegion, CalibDataID, I, Distance, Phi, RowCenter, ColumnCenter)gen_rectangle2_contour_xld (Rectangle, RowCenter, ColumnCenter, Phi, Distance * 0.52, 8)*** 二、一维尺寸测量:* 1.设置测量区域:准备提取垂直于矩形的直边(MeasureHandle——测量矩形对象句柄)* 2.找寻你设定检测区域内的边缘:提取垂直于矩形或环形弧的直边* (Amplitude-指定的是一个缩放,通过边界的坐标加上缩放的计算,可以计算出确切的距离就存在Distance里)* 3.删除一个测量对象gen_measure_rectangle2 (RowCenter, ColumnCenter, Phi, Distance * 0.52, 8, 768, 576, 'nearest_neighbor', MeasureHandle) measure_pos (Image, MeasureHandle, 1, 40, 'all', 'all', RowEdge, ColumnEdge, Amplitude, Distance1)close_measure (MeasureHandle)Rows := [RowEdge[0],RowEdge[|RowEdge| - 1]]Columns := [ColumnEdge[0],ColumnEdge[|RowEdge| - 1]]gen_cross_contour_xld (Cross, Rows, Columns, 16, Phi)*** 三、转换坐标:(相机坐标系->世界坐标系的转化)* 查询标定数据(所有标定对象的总体姿态或特定的标定对象姿态的数据 * 通过选择DataName中的以下参数,您可以查询在由calibrate_cameras执行标定期间,* 哪些标定对象位姿参数得到了(或已经得到了)优化)* 'pose'——优化标定对象位姿,相对于当前参考相机get_calib_data (CalibDataID, 'calib_obj_pose', [0,I - 1], 'pose', Pose)* 将两个边界点转换为世界坐标系* 计算两点的距离image_points_to_world_plane (CamParam, Pose, Rows, Columns, 'm', SX, SY)distance_pp (SY[0], SX[0], SY[1], SX[1], Width)* ** 四、显示宽度测量结果dev_display (Image)dev_set_color ('white')dev_set_line_width (3)dev_display (Rectangle)dev_set_color ('green')dev_set_draw ('fill')dev_set_line_width (2)dev_display (Cross)dev_set_draw ('margin')* 宽度显示disp_message (WindowHandle, 'Width = ' + (Width * 100)$'8.3f' + 'cm', 'window', 12, 12, 'black', 'true')disp_continue_message (WindowHandle, 'black', 'true')stop ()* ** 五、现在,测量标定标记(标定板上的标定点)的大小 * 提取图像中的椭圆erosion_circle (PlateRegion, ROI, 17.5)reduce_domain (Image, ROI, ImageReduced)*使用Deriche, Lanser, Shen或Canny过滤器提取亚像素精确的边缘edges_sub_pix (ImageReduced, Edges, 'canny', 1, 20, 60)select_contours_xld (Edges, SelectedEdges, 'contour_length', 20, 99999999, -0.5, 0.5)* Fit ellipses to extracted edges 将椭圆匹配到提取的边缘* 由椭圆或椭圆弧构成的近似的XLD轮廓(输出椭圆参数)fit_ellipse_contour_xld (SelectedEdges, 'fitzgibbon', -1, 2, 0, 200, 3, 2, Row, Column, Phi, Radius1, Radius2, StartPhi, EndPhi, PointOrder)MeanRadius1 := mean(Radius1)MeanRadius2 := mean(Radius2)DevRadius1 := deviation(Radius1)DevRadius2 := deviation(Radius2)** 将椭圆转换为世界坐标,它们应该是圆,并将圆从米转换为毫米,这样我们就可以看到它们。contour_to_world_plane_xld (SelectedEdges, WorldCircles, CamParam, Pose, 'mm')* Fit ellipses to the circles in world coordinates 在世界坐标中将椭圆与圆匹配fit_ellipse_contour_xld (WorldCircles, 'fitzgibbon', -1, 2, 0, 200, 3, 2, Row, Column, Phi, RadiusW1, RadiusW2, StartPhi, EndPhi, PointOrder)MeanRadiusW1 := mean(RadiusW1)MeanRadiusW2 := mean(RadiusW2)DevRadiusW1 := deviation(RadiusW1)DevRadiusW2 := deviation(RadiusW2)* * 显示椭圆测量结果dev_display (Image)dev_set_color ('yellow')dev_set_line_width (3)dev_display (SelectedEdges)Message := 'Measured dimensions of the ellipses'Message[0] := '                    Mean Radius1; Mean Radius2; (Standard deviations [%])'Message[1] := 'Image coordinates:       ' + MeanRadius1$'5.2f' + 'px; ' + MeanRadius2$'5.2f' + 'px            (' + (DevRadius1 / MeanRadius1 * 100)$'4.2f' + ', ' + (DevRadius2 / MeanRadius2 * 100)$'4.2f' + ')'Message[2] := 'World coordinates:       ' + (MeanRadiusW1 / 10)$'5.2f' + 'cm; ' + (MeanRadiusW2 / 10)$'5.2f' + 'cm            (' + (DevRadiusW1 / MeanRadiusW1 * 100)$'4.2f' + ', ' + (DevRadiusW2 / MeanRadiusW2 * 100)$'4.2f' + ')'disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')if (I < 10)disp_continue_message (WindowHandle, 'black', 'true')stop ()endif
endfor
clear_calib_data (CalibDataID)

结果:
1.read_image
在这里插入图片描述
2.find_calib_object 填充标定数据模型
在这里插入图片描述
3.calibrate_cameras (CalibDataID, Error) 矫正所有相机参数
在这里插入图片描述
4.验证相机标定结果:通过 1D mesuring

  • 1)get_measure_positions 找到需要测量区域的位姿(位置和方向)
  • 2)gen_measure_rectangle2 设置测量区域
  • 3)measure_pos 找寻你设定检测区域内的边缘:提取垂直于矩形的所有直边
  • 4)image_points_to_world_plane 转换坐标:(相机坐标系->世界坐标系的转化)
    在这里插入图片描述
    在这里插入图片描述
    5)测量标记点的大小:
  • Radius1 ,Radius2 椭圆长短 半径

在这里插入图片描述
在这里插入图片描述

8.参考算子介绍

  • HALCON 1D Measure 算子初识
  • 一维测量中measure_pos和measure_pairs算子
    在这里插入图片描述
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491041.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

马斯克的脑机接口能如愿以偿吗?

来源&#xff1a;都世民科学网博客摘要&#xff1a;本文主要讨论马斯克的脑机接口设备更新的要点&#xff0c;他发布的计划真能如愿以偿吗&#xff1f;可能会出现什么问题&#xff0c;将如何应对&#xff1f;是能治病&#xff0c;还是导致新的疾病&#xff1f;关键词&#xff1…

MATLAB的GUI如何清空坐标轴的图像

下面这两句即可实现清空GUI中的坐标轴 axes(handles.axes1); %指定需要清空的坐标轴 cla reset; 但假如你之前的坐标轴四周是有边框的&#xff0c;而且是没有坐标刻度和坐标值的&#xff0c;如下图所示&#xff0c;你会发现通过上面这两句代码虽然清空了坐标轴的内容&#xf…

Halcon学习笔记:1D Measuring一维测量_fuse.hdev灯丝测量示例

Halcon学习笔记&#xff1a;1D Measuring一维测量_fuse.hdev灯丝测量示例 一.基本概念 基本流程为&#xff1a; 获取图像对图像进行灰度值标定 &#xff08;针对相机获取的图像灰度和输入能量之间的非线性关系&#xff0c;获得相机对输入能量的线性函数&#xff09;排列感兴趣…

尘埃落定!苹果 10 亿美元入局 5G,Intel 挥别 9 年基带业务

来源&#xff1a; 雷锋网 雷锋网消息&#xff0c;2019 年 7 月 25 日&#xff0c;苹果公司和 Intel 共同宣布&#xff0c;双方已经正式达成收购协议&#xff0c;Apple 将收购 Intel 智能手机调节解调器业务的绝大部分&#xff0c;收购价格正是此前《华尔街日报》爆料出的 10 亿…

[原创]android使用代码生成LayerDrawable的方法和注意事项

为了有更好的UI体验&#xff0c;一般我们会把button、textview等控件的背景设置上阴影。传统的做法是美工提供一张具有阴影效果的nine patch图&#xff0c;然后将其在xml文件中添加到background属性。这种做法没有问题&#xff0c;不过缺乏灵活性。 图1.使用代码生成的具有“阴…

数字图像处理:四连通域与八连通域

四连通域与八连通域 1、所谓四连通区域或四邻域&#xff0c;是指对应像素位置的上、下、左、右&#xff0c;是紧邻的位置。共4个方向&#xff0c;所以称之为四连通区域&#xff0c;又叫四邻域。 2、所谓八连通区域或八邻域&#xff0c;是指对应位置的上、下、左、右、左上、右…

深度学习奠基人特伦斯:美国学界已经找到了解释人工智能“黑盒子”的方法...

&#xff08;图片来源&#xff1a;壹图网&#xff09;来源&#xff1a;今日头条经济观察网 记者 宋笛 “是的&#xff0c;目前美国数学家已经找到了解释深度学习黑盒子的方法&#xff0c;但是还没有发表&#xff0c;所以我不能透露更多。”7月25日 &#xff0c;美国“四院院士”…

vs2013配置opencv2.4.9后出现找不到opencv_core249d.dll和opencv_highgui249d.dll问题

问题&#xff1a;vs2013配置opencv2.4.9后&#xff0c;运行程序&#xff0c;出现找不到opencv_core249d.dll和opencv_highgui249d.dll问题 解决办法&#xff1a;首先将opencv_core249d.dll&#xff1b;opencv_highgui249d.dll;opencv_imgproc249d.dll三个文件从“OpenCV的安装…

Halcon算子学习:图像阈值分割-threshold、binary_threshold、dyn_threshold算子

Halcon算子学习&#xff1a;图像阈值分割算子前言1.threshold-全局固定阈值分割2.Binary Threshold-自动全局阈值分割3.dyn_threshold-局部动态阈值分割小结&#xff1a;4.var_threshold算子-均值和标准偏差局部阈值分割5.dual_threshold-双重阈值分割&#xff08;有符号图像的…

起底软银帝国:芯片、机器人、棒球队无所不投

来源&#xff1a;巴伦全球投资企鹅号划重点&#xff1a;孙正义喜欢将软银的投资组合比作银河系中的星星&#xff0c;称它们“将持续闪耀300年。”孙正义对阿里巴巴的投资可能是所有投资人做过的最好的投资之一。软银并非真正意义上的企业集团&#xff0c;其结构也不是封闭式基金…

南京大学潘天群教授:人类智能发展的宏大叙事

作者&#xff1a;南京大学哲学系教授&#xff0c;科学技术与社会研究所所长潘天群新拿到刚出版的《崛起的超级智能》一书&#xff0c;我一口气读完了。作者刘锋敏锐地观察到&#xff0c;今天的互联网已经不是个人电脑及智能手机等的简单连接&#xff0c;而是一个有生命的智能体…

Halcon学习笔记:读取多张图片

1.第1种方法 遍历文件路径数组 path:E:/images1/ ImagePath:[] ImagePath[0]:a000.bmp ImagePath[1]:a001.bmp ImagePath[2]:a002.bmp ImagePath[3]:a003.bmp ImagePath[4]:a004.bmp ImagePath[5]:a005.bmp ImagePath[6]:a006.bmp ImagePath[7]:a007.bmp for i:0 to 7 by 1re…

win10下VS2013+OpenCV2.4.9环境配置

参考来源https://blog.csdn.net/wsf09/article/details/78853823 一、安装Visual Studio2013 VS2013的安装可以参考软件安装管家公众号 二、配置OpenCV2.4.9 1、首先下载安装包 可以从OpenCV的官网下载 OpenCV2.4.9&#xff0c;但是会有点慢&#xff0c;中途可能还下载失败…

大脑简史(3)-大脑的结构

来源&#xff1a;人机与认知实验室前两篇文章&#xff0c;笔者和大家简短的介绍了一下大脑历史上的大事件和研究大脑的常用手段&#xff0c;这篇文章&#xff0c;想和大家分享一下&#xff1a;大脑的结构&#xff0c;也就是说&#xff1a;我们的大脑内究竟有什么。1967年&#…

Halcon算子学习:xyz_to_object_model_3d

xyz_to_object_model_3d (X, Y, Z : : : ObjectModel3D) 将3D点从图像转换为3D对象模型。 输入&#xff1a; X (input_object) 单通道图像→object (real) 用三维点的x坐标和三维点ROI区域。Y (input_object) 单通道图像→object (real) 图像与三维点的y坐标。Z (input_obje…

传感器融合:自动驾驶领域的另一个突围方向

来源&#xff1a;AI芯天下目前&#xff0c;自动驾驶的安全事故原因绝大多数出现在传感器这个重要环节&#xff0c;将各类传感器融合在一起&#xff0c;能否就能起到1&#xff0b;1&#xff1e;2的效果呢&#xff1f;传感器是汽车感知周围的环境的硬件基础&#xff0c;在实现自动…

Halcon算子学习:surface_normals_object_model_3d

surface_normals_object_model_3d ( : : ObjectModel3D, Method, GenParamName, GenParamValue : ObjectModel3DNormals) 计算三维物体模型的三维曲面法线 输入&#xff1a; ObjectModel3D (input_control) 包含3D点数据的3D对象模型句柄。Method(input_control) 法线计算方…

Halcon算子学习:smooth_object_model_3d

smooth_object_model_3d ( : : ObjectModel3D, Method, GenParamName, GenParamValue : SmoothObjectModel3D) 平滑3D对象模型的3D点 输入&#xff1a; object_model_3d&#xff08;input_control&#xff09; 包含3D点数据的3D对象模型的句柄。Method&#xff08;input_con…

机器人巨头争霸,谁主沉浮?

来源&#xff1a;高工机器人过去以来&#xff0c;ABB、发那科、安川、库卡这四家机器人巨头独霸中国一半以上的市场份额。但这一情况开始逆转&#xff0c;本土企业在被外企“教育”了多年之后&#xff0c;开始用更大的勇气和更快的创新速度给以“老师”们迎头痛击。2019年&…

Halcon算子学习:create_surface_model

create_surface_model ( : : ObjectModel3D, RelSamplingDistance, GenParamName, GenParamValue : SurfaceModelID) 创建执行基于表面的匹配所需的数据结构 输入&#xff1a; object_model_3d 3D对象模型的句柄。RelSamplingDistance (input_control) real→(real) 相对于物…