参数主要在于cx,cy和f
公式主要是:
X = (u - cx) * Z / f
Y = (v - cy) * Z / f
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
zResoulution := 0.1
cx := 359.374
cy := 328.806
f := 976.321
open_framegrabber ('3DCamera', 0, 0, 0, 0, 0, 0, 'default', -1, 'default', -1, 'false', 'A2110046366E00D33 Z16 (960x600) ', 'A2310192366E10D33', 0, -1, AcqHandle)
grab_image_start (AcqHandle, -1)
while (true)
grab_image_async (Image, AcqHandle, -1)
* Calutlate Z
convert_image_type(Image, Z, 'real')
scale_image(Z, Z, zResoulution, 0)
* Calutlate X and Y
* X = (u - cx) * Z / f
* Y = (v - cy) * Z / f
* u is the pixel index of x coord(Width coord), counted from 0
* v is the pixel idnex of y coord(Height coord), counted from 0
get_image_size(Image, w, h)
* Generate u Map
gen_image_surface_first_order(u, 'real', 0, 1, 0, 0, 0, w, h)
* Generate v Map
gen_image_surface_first_order(v, 'real', 1, 0, 0, 0, 0, w, h)
scale_image(u, X, 1, -cx)
scale_image(v, Y, 1, -cy)
mult_image(X, Z, X, 1/f, 0)
mult_image(Y, Z, Y, 1/f, 0)
xyz_to_object_model_3d(X, Y, Z, PointCloud)
write_object_model_3d(PointCloud, 'ply', 'test.ply', [], 0)
visualize_object_model_3d (WindowHandle, PointCloud, [], [], [], [], [], [], [], PoseOut)
endwhile
close_framegrabber (AcqHandle)