Halcon学习笔记——摄像机标定(1)
文章目录
- 创建
- 查找
- 标定
- 测试
创建
- gen_caltab (7, 7, 0.00375, 0.5, ‘caltab.descr’, ‘caltab.ps’)
- 首先创建标定文件 根据所用的标定板的款式输入不同的参数 前两个参数分别是X,Y轴两个方向上的点数,第三个是中心距单位mm 第四个为小圆点直径与中心距的比例 例如我用的中心距3.75mm 小圆直径1.875mm 则第四个参数填0.5 运行之后的descr文件之后会用到 ps文件可以查看
- StartCamPar := [0.016,0,8.3e-006,8.3e-006,800,600,1600,1200]
- set_calib_data_cam_param (CalibDataID, 0, ‘area_scan_division’, StartCamPar)
- 这两句应一起使用 ,上一句是准备初始化相机参数,参数分别是【焦距单位m,Kappa单位1/m*m,像元宽单位m,像元高单位m,图像坐标系原点在像素坐标系的行坐标单位像素,图像坐标系原点在像素坐标系的行坐标单位像素,图像宽单位像素,图像高单位像素】
准备好相机初始化参数后,执行第二句话,第二句第一个参数为标定句柄,第二个参数为相机索引,第三个是
相机扫描类型有线扫,面扫等多个参数,根据相机扫描类型的不同,第四个参数相机参数也会有变化,这里选择的是面扫。第四个就是刚才准备好的相机初始化参数 - set_calib_data_calib_object (CalibDataID, 0, CalTabDescrFile)
- 再设置标定句柄的标定文件参数 【标定句柄,相机索引,标定文件路径(就是descr文件,也可以是cpd文件)】
查找
- TmpCtrl_FindCalObjParNames := [‘gap_tolerance’,‘alpha’,‘skip_find_caltab’]
- TmpCtrl_FindCalObjParValues := [1,1,‘false’]
- find_calib_object (Image, CalibDataID, 0, 0,Index, TmpCtrl_FindCalObjParNames, TmpCtrl_FindCalObjParValues)
- 该函数作用为在图像中查找标定板并且添加到句柄中,【图像,标定句柄,相机索引,标定板索引,pose位置索引,参数名称默认[],参数值默认[]】
- get_calib_data_observ_pose (CalibDataID, 0, 0, Index, ObjInCameraPose)
- 查看当前标定板在图像坐标系中的Pose信息,【标定句柄,相机索引,标定板索引,姿态Pose索引,输出参数Pose】
- get_calib_data_observ_contours (Contours, CalibDataID, ‘marks’, 0, 0, 0)
- 查看当前图像中标定板的(mask点、标定板外框、当前标定板外框)XLD信息,【输出XLD轮廓,标定句柄,输出类型,相机索引,标定板索引,Pose索引】。
- get_calib_data_observ_points (CalibDataID, 0, 0, 0, Row, Column, Index1, Pose1)
- 查看当前位姿下的mask点数据(行列信息),【标定句柄,相机索引,标定板索引,位姿Pose索引,mask行信息,mask列信息,mask索引,Pose】
- get_calib_data_observ_pose (CalibDataID, 0, 0, Index, ObjInCameraPose)
- 查看当前位姿下的Pose数据【标定句柄、相机索引、标定板索引、姿态索引、输出姿态信息】
- 注:以上只是查看在标定之前的一些中间参数 不可以以此作为最终数据进行标定后的测量等 因为摄像机内参数还是初始值
标定
- calibrate_cameras (CalibDataID, Error)
- 标定只有一行代码 【标定句柄、误差单位像素】
测试
get_calib_data (CalibDataID, 'camera', 0, 'params', CamParam)
for Index := 0 to |ImageFiles| - 1 by 1
read_image (Image, ImageFiles[Index])
get_calib_data (CalibDataID, 'calib_obj_pose', [0,Index], 'pose', RealPose)
get_calib_data_observ_points (CalibDataID, 0, 0, Index, Row2, Column2, Index2, Pose)
set_origin_pose (RealPose, 0.0, 0.0, 0.001, Pose)
image_points_to_world_plane (CamParam, Pose, Row2, Column2, 'm', SX, SY)
gen_cross_contour_xld (Cross, Row2[0], Column2[0], 6, 0.785398)
gen_cross_contour_xld (Cross, Row2[1], Column2[1], 6, 0.785398)
distance_pp (SY[0], SX[0], SY[1], SX[1], Width)
disp_message (3600, 'Distance:' + Width, 'window', 100, 100, 'black', 'true')
stop()
endfor简单讲一下 首先获取标定后的相机内参矩阵 再根据每张图片中标定板姿态信息求出世界坐标中的两点距离
Halcon学习笔记——摄像机标定(1)相关推荐
- Halcon学习笔记:3D_coordinates(3D标定)
Halcon学习笔记:3D_coordinates(3D标定) 欢迎有兴趣的朋友一起学习,代码理解注释有问题的可以告诉我,一起讨论,共同进步. *初始化程序,dev_close_window() *关 ...
- Halcon学习笔记:1D Measuring一维测量_fuse.hdev灯丝测量示例
Halcon学习笔记:1D Measuring一维测量_fuse.hdev灯丝测量示例 一.基本概念 基本流程为: 获取图像 对图像进行灰度值标定 (针对相机获取的图像灰度和输入能量之间的非线性关系, ...
- Halcon学习笔记(三)---数据类型
Halcon学习笔记(三)---数据类型 halcon只能在单独行进行注释,不能在语句后面进行注释. 1.tuple(元组,重数) 赋值符号":=" tuple算子: (1)变量定 ...
- Halcon学习笔记:select_points_object_model_3d(3D对象模型阀值分割)
Halcon学习笔记:select_points_object_model_3d 3D对象模型阀值分割 This example program shows how to use the operat ...
- Halcon学习笔记:xyz_attrib_to_object_model_3d示例
Halcon学习笔记:xyz_attrib_to_object_model_3d--从X.Y和Z图像中创建3D对象模型同时附加属性 xyz_attrib_to_object_model_3d.hdev ...
- Halcon学习笔记(一):Qt+Halcon联合开发配置
Halcon学习笔记(1):Qt+Halcon联合开发配置 首先是新建一个QT项目qtest_hc 方法一: 1)QT项目文件 qtest_hc 添加库: #1.包含目录添加 INCLUDEPATH ...
- Halcon 学习笔记八:颜色识别
Halcon 学习笔记八:颜色识别 一.图像处理需要的知识 二.图像处理的预处理和分割过程 二.颜色识别的方法 三.例子一 四.例子二 五.例子三 一.图像处理需要的知识 1.图像处理基础(rgb(h ...
- 一、HALCON学习笔记(容器液位缺陷检测)
一.HALCON学习笔记(容器液位缺陷检测) * In this example a fill level check for the * pharmaceutical industry is dem ...
- Halcon学习笔记:划痕、油污、瑕疵
Halcon学习笔记:划痕.油污.瑕疵 划痕.油污.瑕疵,常用的方法有傅里叶变换和Blob分析. 1.表面划痕 invert_image(Image,ImageInvert1) mult_image ...
- Halcon 学习笔记五:几何定位+仿射变换+测量
Halcon 学习笔记五:几何定位+仿射变换+测量 定位流程 例子一 例子二(药片的定位) 例子三(充电宝定位) 例子四(车牌定位) 其他 定位流程 blob分析 模板匹配 (仿射变换成标准的形状) ...
最新文章
- java事件处理模型_从零开始理解JAVA事件处理机制(3)
- 从无盘启动看 Linux 启动原理
- 8 月社群专属福利活动开启!进群免费领取开发视频课程!
- 20200721:每日一题之不同的二叉搜索树 II(leetcode95)
- 小兔子(PAT乙级练习题)
- 改善代码设计 —— 处理概括关系(Dealing with Generalization)
- No WebApplicationContext found: no ContextLoaderListener registered?
- 第一周周二一天工作总结和周三工作计划——PM(李忠)
- python可以跨平台吗_python是跨平台的么
- 【Adobe Premiere Pro 2020】pr模板下载和pr使用模板创建视频、pr调色说明、pr全景视频编辑说明、pr无缝转场特效制作流程、pr保存预设效果和pr使用预设效果
- Python 第六章 面向对象编程(MD模式)
- 需求分析-1 愿景分析
- 设计模式(二)-------------- 工厂模式
- 图片Base64编码
- python cv2什么意思_cv2,CV2是什么意思
- Nginx 源码编译安装配置
- unittest pycharm test framework quit unexpectedly 解决 Empty suite问题
- MATLAB中resample函数使用
- 软件实训之智慧停车需要解决什么痛点和难点
- springcloud 启动 Run Dashboard