学习Halcon(3)--Halcon自带例程相机内参标定

转自:http://blog.sina.com.cn/s/blog_723702bc0102xfjs.html


功能  :  相机内参标定

ImgPath := '3d_machine_vision/calib/'
dev_close_window ()
dev_open_window (0, 0, 652, 494, 'black', WindowHandle)
dev_update_off ()
dev_set_draw ('margin')
dev_set_line_width (3)
OpSystem := environment('OS')
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
*
* Calibrate the camera.
*
StartCamPar := [0.016,0,0.0000074,0.0000074,326,247,652,494]
//创建标定数据模型,单相机标定选“calibration_obiect” 得到标定数据模型的句柄
create_calib_data ('calibration_object', 1, 1, CalibDataID)
//在标定模型中设定相机初始内参, area_scan_division为面扫相机
set_calib_data_cam_param (CalibDataID, 0, 'area_scan_division', StartCamPar)
//在标定模型中设定标定板描述文件
set_calib_data_calib_object (CalibDataID, 0, 'caltab_30mm.descr')
NumImages := 10
* Note, we do not use the image from which the pose of the measurement plane can be derived
for I := 1 to NumImages by 1
    read_image (Image, ImgPath + 'calib_' + I$'02d')
    dev_display (Image)
//提取标定板的centers and the contours  估计标定板相对相机的pose  所有收集的数据都存储在校准对象姿态CalibObjPoseIdx的校准数据模型中 
    find_calib_object (Image, CalibDataID, 0, 0, I, [], [])
//上面那一句把centers and contours 写到句柄里,下面这句在句柄里把contours数据取出来
    get_calib_data_observ_contours (Caltab, CalibDataID, 'caltab', 0, 0, I)
    dev_set_color ('green')
    dev_display (Caltab)
endfor
//标定相机 相机标定完成
calibrate_cameras (CalibDataID, Error)
//在句柄里把'camera'参数取出来
get_calib_data (CalibDataID, 'camera', 0, 'params', CamParam)
* Write the internal camera parameters to a file
//把'camera'参数写到'camera_parameters.dat'里
write_cam_par (CamParam, 'camera_parameters.dat')
Message := 'Interior camera parameters have'
Message[1] := 'been written to file'
disp_message (WindowHandle, Message, 'window', 12, 12, 'red', 'false')
clear_calib_data (CalibDataID)

 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值