我换成线阵相机后,取的点云是横向排列的了。变成一条点云图像了。
代码如下:
- dev_close_window ()
- dev_open_window(0,0,600,400,'black',WindowHandle1)
- dev_set_draw ('margin') //设置轮廓
- dev_set_line_width (3) //设置线宽
- dev_set_color ('green') //设置颜色为绿色
- dev_set_lut ('default') //
- * 设置相机内外参,光平面位姿,移动位姿
- CamParam := [0.00922382,-1194.63,2.67343e-006,3.2e-006,396.822,244.077,720,480]
- Campose :=[0.000185546,0.00743155,0.0657843,317.33,355.751,267.007,0]
- LightplanePose :=[0.00817876, 0.0173276, -0.000317222, 179.997, 358.681, 360.0, 0]
- MovementPose :=[0.0529332, 0.00642633, 0.0561776, 0, 0, 0, 0]
- *建立sheetoflight模型,并设置参数
- gen_rectangle1 (ProfileRegion,25.5, 1.1875, 310.833, 569.313)
- dev_update_off()
- create_sheet_of_light_model (ProfileRegion,['min_gray','num_profiles','ambiguity_solving'],[60,1450,'brightest'],SheetOfLightModelID)
- set_sheet_of_light_param (SheetOfLightModelID, 'calibration', 'xyz') //将标定变形应用在不同的图像中
- set_sheet_of_light_param (SheetOfLightModelID, 'scale', 'mm') //单位
- set_sheet_of_light_param (SheetOfLightModelID, 'camera_parameter', CamParam) //相机内部参数
- set_sheet_of_light_param (SheetOfLightModelID, 'camera_pose', Campose) //相机坐标系统
- set_sheet_of_light_param (SheetOfLightModelID, 'lightplane_pose', LightplanePose) //相机姿态,如果与测的物体相同平面
- set_sheet_of_light_param (SheetOfLightModelID, 'movement_pose', MovementPose) //移动姿态,移动过程中通常为大地坐标
- *连续读图,计算中心并保存
- i:=1
- open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'default', '[1] AV TO USB2.0', 0, -1, AcqHandle)
- set_framegrabber_param (AcqHandle,'gamma',7)
- dev_update_off()
- grab_image_start (AcqHandle, -1)
- while (i<1450)
- grab_image_async (Image, AcqHandle, -1)
- measure_profile_sheet_of_light(Image,SheetOfLightModelID,[])
- dev_display (Image)
- dev_display(ProfileRegion)
- i:=i+1
- endwhile
- close_framegrabber (AcqHandle)
- * 获取片光图像
- get_sheet_of_light_result (Disparity, SheetOfLightModelID, 'disparity') //返回片光深度距离
- get_sheet_of_light_result (X, SheetOfLightModelID, 'x') //返回片光x数据
- get_sheet_of_light_result (Y, SheetOfLightModelID, 'y') //返回片光y数据
- get_sheet_of_light_result (Z, SheetOfLightModelID, 'z') //返回片光z数据
- get_sheet_of_light_result_object_model_3d (SheetOfLightModelID, ObjectModel3DID) //返回片光3D模型数据
- clear_sheet_of_light_model (SheetOfLightModelID) //清除指定片光模型
- * 显示视差图像
- get_image_size (Disparity, Width, Height) //获取图像大小
- dev_set_window_extents (0, 0, Width, Height) //调整大小
- dev_set_lut ('temperature') //
- set_display_font (WindowHandle1, 16, 'mono', 'true', 'false') //设置字体
- dev_clear_window () //清除窗体
- dev_display (Disparity)
- disp_message (WindowHandle1, '重建片光生产的视差图像', 'window', -1, -1, 'black', 'true') //显示信息
- disp_continue_message (WindowHandle1, 'black', 'true') //显示暂停信息
- stop () //暂停
- * 显示Z坐标
- dev_close_window () //关闭窗体
- dev_open_window (Height + 10, 0, Width * .5, Height * .5, 'black', WindowHandle3) //打开窗体3
- set_display_font (WindowHandle3, 16, 'mono', 'true', 'false')//设置字体
- dev_display (Z) //显示Z信息
- disp_message (WindowHandle3, '标定的 Z 坐标', 'window', -1, -1, 'black', 'true') //显示信息
- * 显示Y坐标
- dev_open_window ((Height + 10) * .5, 0, Width * .5, Height * .5, 'black', WindowHandle2) //打开窗体2
- set_display_font (WindowHandle2, 16, 'mono', 'true', 'false')//设置字体
- dev_display (Y)//显示Z信息
- disp_message (WindowHandle2, '标定的 Y 坐标', 'window', -1, -1, 'black', 'true')
- * 显示X坐标
- dev_open_window (0, 0, Width * .5, Height * .5, 'black', WindowHandle1) //打开窗体1
- dev_display (X)//显示Z信息
- dev_set_lut ('default')
- set_display_font (WindowHandle1, 16, 'mono', 'true', 'false')//设置字体
- disp_message (WindowHandle1, '标定的 X 坐标', 'window', -1, -1, 'black', 'true') //显示信息
- disp_continue_message (WindowHandle3, 'black', 'true') //显示暂停信息
- stop () //暂停
- get_object_model_3d_params(ObjectModel3DID,'point_coord_z',zvalue)
- get_object_model_3d_params(ObjectModel3DID,'point_coord_y',yvalue)
- get_image_size(Z,Width1,Height1)
- * Display the 3d object model
- CameraParam1 := [0.00922382,-1194.63,2.67343e-006,3.2e-006,396.822,244.077,720,480] //相机内部参数
- Instructions[0] := '旋转: Left 鼠标左键'
- Instructions[1] := '缩放: Shift + 鼠标左键'
- Instructions[2] := '移动Move: Ctrl + 鼠标左键'
- PoseIn := [0,-10,300,-30,0,-30,0]
- dev_close_window () //关闭窗体2
- dev_close_window () //关闭窗体3
- dev_close_window () //关闭窗体12
- dev_open_window (0, 0, CameraParam1[6], CameraParam1[7], 'black', WindowHandle) //打开新窗体
- set_display_font (WindowHandle, 16, 'mono', 'true', 'false')//设置字体
- visualize_object_model_3d (WindowHandle,ObjectModel3DID ,CameraParam1 , PoseIn, 'color', 'blue', \
- '重建', '', Instructions, PoseOut)//显示信息
- write_object_model_3d(ObjectModel3DID,'om3','D:/3d',[],[])
复制代码
|