基于halcon将深度图转换成点云图并保存

能力有限不足之处或者可优化之处还望多多指教!

*首先是读取图像

 read_image (Image, './deep/20.tif')  

*创建个roi区域并保存

gen_rectangle1 (ROI_0, 1.0544, 161.358, 775.148, 1281.81)
  write_tuple ([450.0544, 238.358, 1455.148, 1131.81], './param/roi.tup')

file_exists ('./param/roi.tup', roiFileExists1)
if (not roiFileExists1)
    RunMessage := 'roi文件不存在'
    return ()
endif
read_tuple ('./param/roi.tup', roiTuple)
tuple_length (roiTuple, Length1)
if (Length1 == 0)
    RunMessage := 'roi文件格式错误,请检查文件'
    return ()
endif

get_image_size (ImageOut, Width, Height)
threshold (ImageOut, Region7, 1000, 2050)
* region_features (Region7, 'area', Value1)
* if (Value1>2000)
*     paint_region (Region7, ImageOut, ImageOut, -32768, 'fill')
*     median_image (ImageOut, ImageOut, 'circle', 1, 'mirrored')
* endif
gen_rectangle1 (Rectangle, roiTuple[0], roiTuple[1], roiTuple[2], roiTuple[3])
reduce_domain (ImageOut, Rectangle, ImageReduced)
regiongrowing (ImageReduced, Regions1, 3, 3, 5, 50)
select_shape (Regions1, SelectedRegions4, 'area', 'and', 10000, 99999)
select_shape (SelectedRegions4, SelectedRegions5, 'height', 'and', 50, 500)
shape_trans (SelectedRegions5, RegionTrans, 'rectangle2')
boundary (RegionTrans, RegionBorder, 'inner')

dilation_circle (RegionBorder, RegionDilation, 1.5)
paint_region (RegionDilation, intensity, ImageResult, [255,0,0], 'fill')
tupleX:=[]
tupleY:=[]
tupleZ:=[]
get_image_size (ImageResult, Width1, Height1)
for Index3 := 0 to Width1-3 by 3
    for Index4 := 0 to Height1-3 by 3
        get_grayval (ImageResult, Index4, Index3, Grayval)
        if (Grayval>1500)
            tupleX:=[tupleX,Index3]
            tupleY:=[tupleY,Index4]
            tupleZ:=[tupleZ,Grayval]
        endif
    endfor
endfor
gen_object_model_3d_from_points (tupleX, tupleY, tupleZ, ObjectModel3D1)


connection_object_model_3d (ObjectModel3D1, 'distance_3d', 5, ObjectModel3DConnected)
select_object_model_3d (ObjectModel3DConnected, 'num_points', 'and', 1000, 100000, ObjectModel3D2)
*dev_open_window (0, 0, Width, Height, 'black', WindowHandle1)
*visualize_object_model_3d (WindowHandle1,[ObjectModel3D1,ObjectModel3D2], [],[], ['color_0','color_1','alpha_1','disp_pose'], ['green','gray',0.5,'true'],'RectBOX', [], [], Pose) 
union_object_model_3d (ObjectModel3D2, 'points_surface', UnionObjectModel3D)

*保存点云

write_object_model_3d (UnionObjectModel3D, 'ply', 'D:/YG/yuan20.ply', [], [])
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值