*注意,这个程序需要读取相机内部参数,而这个参数是由camera_calibration_internal.hdev这个项目生成的。
- Attention:
- This program reads the internal camera parameters from the file
- ‘camera_parameters.dat’, which, e.g., could be generated by the program
- ‘camera_calibration_internal.hdev’
- *图像路径
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 (1)
*设置窗体字体,影响窗体大小
set_display_font (WindowHandle, 14, ‘mono’, ‘true’, ‘false’)
*读取项目内部参数 - Read the internal camera parameters from file
try
*读取参数
read_cam_par (‘camera_parameters.dat’, CamParam)
catch (Exception)
*先把这个程序跑一下camera_calibration_internal.hdev,生成内部参数- run ‘camera_calibration_internal.hdev’ first to generate camera
- parameter file ‘camera_parameters.dat’
stop ()
endtry
*从图像点钟 定义外部参数和世界坐标
- Determine the external camera parameters and world coodinates from image points
- 外部参数可以从标定板的一张图像获取,这个标定板直接在测量平面上定位
- The external camera parameters can be determined from an image, where the
- calibration plate is positioned directly on the measurement plane
*读取图像
read_image (Image, ImgPath + ‘calib_11’)
*显示图像
dev_display (Image)
*标定板描述文件
CaltabName := ‘caltab_30mm.descr’
*创建标定板ID
create_calib_data (‘calibration_object’, 1, 1, CalibDataID)
*最终的相机内部参数现在已经求出来,可以直接代替上一个内部参数矫正中使用的初始参数。 - Here, the final camera parameters are already known and can be used instead
- of the starting values used in the program ‘camera_calibration_internal.hdev’
*设定参相机参数
set_calib_data_cam_param (CalibDataID, 0, [], CamParam)
*设定标定板描述文件
set_calib_data_calib_object (CalibDataID, 0, CaltabName)
*寻找标定板,并把标定数据放在CalibDataID中
find_calib_object (Image, CalibDataID, 0, 0, 1, [], [])
*获取标定板轮廓
get_calib_data_observ_contours (Caltab, CalibDataID, ‘caltab’, 0, 0, 1)
*获取基于点的观测数据并保存在CalibDataID里面
get_calib_data_observ_points (CalibDataID, 0, 0, 1, RCoord, CCoord, Index, PoseForCalibrationPlate)
*设置显示颜色
dev_set_color (‘green’)
*显示轮廓
dev_display (Caltab)
*设置显示颜色