这个不是hlacon的标准标定板。

勇哥想知道这个+-0.009mm是怎么整出来了。这个例子值得研究一下。

ImgPath := '3d_machine_vision/calib/'

dev_close_window ()

dev_open_window (0, 0, 640, 480, 'black', WindowHandle)

dev_update_off ()

dev_set_draw ('margin')

dev_set_line_width (3)

set_display_font (WindowHandle, 22, 'mono', 'true', 'false')

*

* Calibrate the camera.

*

gen_cam_par_area_scan_division (0.012, 0, 0.00000375, 0.00000375, 640, 480, 1280, 960, StartCamPar)

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

set_calib_data_cam_param (CalibDataID, 0, [], StartCamPar)

set_calib_data_calib_object (CalibDataID, 0, 'calplate_80mm.cpd')

NumImages := 7

for I := 1 to NumImages by 1

read_image (Image, ImgPath + 'calib_image_' + I$'02d')

dev_display (Image)

find_calib_object (Image, CalibDataID, 0, 0, I, [], [])

get_calib_data_observ_contours (Caltab, CalibDataID, 'caltab', 0, 0, I)

get_calib_data_observ_points (CalibDataID, 0, 0, I, Row, Column, Index, StartPose)

dev_set_color ('green')

dev_display (Caltab)

dev_set_color ('red')

disp_circle (WindowHandle, Row, Column, gen_tuple_const(|Row|,1.5))

endfor

calibrate_cameras (CalibDataID, Errors)

get_calib_data (CalibDataID, 'camera', 0, 'params', CamParam)

* The reference image, i.e., the image in which the calibration

* plate is located on the ruler is the first image

get_calib_data (CalibDataID, 'calib_obj_pose', [0,1], 'pose', Pose)

* To take the thickness of the calibration plate into account, the z-value

* of the origin given by the camera pose has to be translated by the

* thickness of the calibration plate.

* Deactivate the following line if you do not want to add the correction.

set_origin_pose (Pose, 0, 0, 0.002, Pose)

* measure the distance between the pitch lines

read_image (Image, ImgPath + 'ruler')

dev_display (Image)

gen_measure_rectangle2 (690, 680, rad(-0.25), 480, 8, 1280, 960, 'bilinear', MeasureHandle)

measure_pairs (Image, MeasureHandle, 0.5, 5, 'all', 'all', RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)

Row := (RowEdgeFirst + RowEdgeSecond) / 2.0

Col := (ColumnEdgeFirst + ColumnEdgeSecond) / 2.0

disp_cross (WindowHandle, Row, Col, 20, rad(45))

image_points_to_world_plane (CamParam, Pose, Row, Col, 'mm', X1, Y1)

distance_pp (X1[0:11], Y1[0:11], X1[1:12], Y1[1:12], Distance)

tuple_mean (Distance, MeanDistance)

tuple_deviation (Distance, DeviationDistance)

disp_message (WindowHandle, 'Mean distance: ' + MeanDistance$'.3f' + 'mm +/- ' + DeviationDistance$'.3f' + 'mm', 'window', 30, 60, 'yellow', 'false')

---------------------

作者:hackpig

来源:www.skcircle.com

版权声明:本文为博主原创文章,转载请附上博文链接!

#转载请注明出处 www.skcircle.com 《少有人走的路》勇哥的工业自动化技术网站。如果需要本贴图片源码等资源,请向勇哥索取。

收藏 | 0点赞 | 0打赏作者

matlab创建圆点标定板,(halcon实例)一种蜂窝圆点标定板校准CCD并测量的例子相关推荐

  1. 工业机器人工具中心点标定的意义_一种利用平面标定板的机器人工具中心点标定方法_2015108676182_说明书_专利查询_专利网_钻瓜专利网...

    技术领域 本发明涉及机器人工具中心点(Toolcenterpoint,TCP)标定方法,尤其涉及一种利用平面标定板的机器人工具中心点标定方法. 背景技术 机器人工具中心点(Toolcenterpoin ...

  2. php实例之简单的留言板,PHP实例一之简单的留言板

    注:参考兄弟连教学视频写的一个简单的留言板模块,获得更多内容请参考我的博文. 示例:文本式留言板 需要的知识点: 1.文件操作: file_put_contents();文件的写入函数 file_ge ...

  3. python 创建一个空向量,python 创建一个空向量_python 创建一维的0向量实例

    python 创建一维的0向量实例 第一种方法: A=[0]*8 第二种方法: import numpy as np A=np.zeros(8) 以上这篇python 创建一维的0向量实例就是小编分享 ...

  4. python 创建一个空向量_python 创建一维的0向量实例

    python 创建一维的0向量实例 第一种方法: A=[0]*8 第二种方法: import numpy as np A=np.zeros(8) 以上这篇python 创建一维的0向量实例就是小编分享 ...

  5. matlab创建圆点标定板,Halcon学习(十八)如何制作标定板

    下面我具体介绍一下,如何制作halcon的标准标定板 方法一:用halcon软件自动生成的.ps文件来制作标定板. 这个也是最简单有效的方法. XNum 每行黑色标志圆点的数量. YNum 每列黑色标 ...

  6. matlab创建圆点标定板,Halcon标定板,网格标定板,机器视觉圆点标定板

    本产品介绍: 产品名称 产品型号 外形尺寸 (mm) 图形精度 (μm) 机器视觉 标定板 HBM03-2010-3Y 122*67*3 1 应用领域 宏诚光学玻璃系列标定板和陶瓷系列标定板是专为高校 ...

  7. python矩阵对角化_numpy创建单位矩阵和对角矩阵的实例

    在学习linear regression时经常处理的数据一般多是矩阵或者n维向量的数据形式,所以必须对矩阵有一定的认识基础. numpy中创建单位矩阵借助identity()函数.更为准确的说,此函数 ...

  8. python 对角阵_numpy创建单位矩阵和对角矩阵的实例

    在学习linear regression时经常处理的数据一般多是矩阵或者n维向量的数据形式,所以必须对矩阵有一定的认识基础. numpy中创建单位矩阵借助identity()函数.更为准确的说,此函数 ...

  9. 圆形标定板_自己改的,圆形标定板,opencv标定代码

    [实例简介] 自己通过opencv棋盘格标定改的代码,用于圆形标定板的相机标定. [实例截图] [核心代码] CircleCalib └── CircleCalib ├── DotFitting │  ...

最新文章

  1. phpcms V9利用num++实现多样形式列表标签调用
  2. Python文档字符串生成器:基于CodeBERT,支持Google、Numpy等多种输出格式
  3. Androidstudio SVN安装与使用
  4. MySQL对查询结果排序
  5. error C2018: unknown character '0xa1'解决方法
  6. springcloud五大组件?注解_spring cloud实现简单的微服务架构
  7. duilib开发(六):基本控件介绍
  8. 中文句法分析_句法分析StanfordParser+依存句法分析pyhanlp
  9. matlab 小波变换程序,matlab 小波变换
  10. 显微镜下的大明内容_显微镜下的大明
  11. html旋转360度特效,CSS3图片旋转特效(360/60/-360度)
  12. 【Python】模块(Module)、包(Package)以及相对导入(relative import)和绝对导入(absolute import)
  13. pr使用中C盘空间变小
  14. Linux驱动——ALSA
  15. android ocr 身份证识别
  16. 三八节礼物推荐,不能错过的四款数码好物推荐
  17. 网优5g前景_5G网络优化工程师的前景和待遇
  18. servlet+mysql实现的学生评教系统(角色:学生、教师、管理员 功能:评教、修改密码、评教规则管理、评教结果查看、学生管理、教师管理、班级管理、学生信息、评教结果可视化展示等)
  19. 【sdx62】XBL设置共享内存变量,然后内核层获取变量实现
  20. MusicPlayerByService

热门文章

  1. 挽歌.怀念光辉岁月(转载)
  2. steam的植物大战僵尸打不开(fatal error)
  3. 第六天:简单项目模块练习、判断、循环、数组、简单冒泡排序。
  4. 前端学习-过渡、2d和3d动画
  5. 微商如何打造个人形象
  6. 人生的智慧(二)-叔本华
  7. 中文搜索引擎提交入口
  8. Java面试题整理一(反射)
  9. 精灵标注助手(Colabeler)使用教程
  10. 老板运煤问题及解决方案