设置首页收藏本站
开启左侧

LMI的输出的CSV文件怎么转换为点云文件

[复制链接]
芜湖小肖 发表于 2022-2-16 21:56:50 | 显示全部楼层 |阅读模式
请问,我在LMI的软件导出的CSV文件,怎么转换为点云文件呢?比如说是OM3文件。
附件是CSV文件。
one.zip (207.35 KB, 下载次数: 23)
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
大凡光学,专注标定板提供
绝地武士 发表于 2022-2-16 22:54:40 | 显示全部楼层
下载与LMI固件版本一致的GO_Tools包,里面有CsvConverter
微信截图_20220216224944.png
运行kCsvConverter.exe,导入lmi生成的csv文件,转换即可。
微信截图_20220216225055.png
其他格式请自行二次处理。

需要说明的是om3是halcon的3d模型格式,lmi并不认识,需要用halcon的算子write_object_model_3d保存为om3才能实现om3格式。
可以先转换csv为STL Binary(*.stl),然后再使用类似下面代码进行生成。
  1. read_object_model_3d ('C:/Users/Admin/Desktop/one.stl', 'mm', [], [], ObjectModel3D, Status)
  2. write_object_model_3d (ObjectModel3D, 'om3', 'C:/Users/Admin/Desktop/Model.om3', [], [])
复制代码

奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| 芜湖小肖 发表于 2022-2-17 14:32:58 | 显示全部楼层
绝地武士 发表于 2022-2-16 22:54
下载与LMI固件版本一致的GO_Tools包,里面有CsvConverter

运行kCsvConverter.exe,导入lmi生成的csv文件, ...

非常感谢解决了我的问题。

讲通了我很多初学不理解的地方。{:1_326:}
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| 芜湖小肖 发表于 2022-2-17 15:24:51 | 显示全部楼层
绝地武士 发表于 2022-2-16 22:54
下载与LMI固件版本一致的GO_Tools包,里面有CsvConverter

运行kCsvConverter.exe,导入lmi生成的csv文件, ...

按照这个思路保存下来后。在halcon中打开确实是3D图像了。
但是不应该是点云吗?不是点,好像是连在一起的。请看我传的图。
截图.png
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
绝地武士 发表于 2022-2-18 08:55:11 | 显示全部楼层
芜湖小肖 发表于 2022-2-17 15:24
按照这个思路保存下来后。在halcon中打开确实是3D图像了。
但是不应该是点云吗?不是点,好像是连在一起 ...

你也可以转换成tiff类型的深度图像,然后参考Halcon实现深度图像转点云图像
https://www.51halcon.com/forum.p ... 4069&fromuid=25
这里你需要指定XYZ之间的间隔,请根据实际大小设置比例。
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
a493858438 发表于 3 天前 | 显示全部楼层
  1. dev_update_off ()
  2. Filename := './LMI-testdata0609/6#.csv'//点云数据的名称,.txt、.csv、.asc等格式的都可以
  3. NumColumns := 3 //如果点云的每行数据有3个数字就写3 (只有xyz 的数据)
  4. count_seconds (Then)
  5. open_file (Filename, 'input', FileHandle)
  6. VecOutLine.clear()
  7. repeat
  8.     fread_line (FileHandle, VecOutLine.at(VecOutLine.length()), IsEOF)
  9. until (IsEOF)
  10. convert_vector_to_tuple (VecOutLine, P)
  11. P := P[0:|P|-2]
  12. P := split(P, ' ')
  13. stop ()
  14. tuple_split (P, ';', Substrings)
  15. Number := number(regexp_replace(Substrings,'^\\s*0*(.+?)\\s*\n*$', '$1'))
  16. IndexIsString := find(type_elem(Number),H_TYPE_STRING)
  17. if (IndexIsString > -1)
  18.      throw ('could not convert "' + Number[IndexIsString] + '" to a number')
  19. endif
  20. X := Number[[0:NumColumns:|Number|-1]]
  21. Y := Number[[1:NumColumns:|Number|-1]]
  22. Z := Number[[2:NumColumns:|Number|-1]]
  23. close_file (FileHandle)
  24. count_seconds (Now)
  25. DurationSeconds := Now - Then
  26. Msg := 'opening file ' + Filename + ' in ' + DurationSeconds + 's'
  27. dev_inspect_ctrl (Msg)
  28. gen_image_const (Image, 'real', 4777, 1689)
  29. for Index := 0 to 1688 by 1
  30.     for Index1 := 0 to 4776 by 1
  31.         set_grayval (Image, Index, Index1, Z[4777*Index+Index1])
  32.     endfor
  33. endfor
  34. scale_image_range (Image, ImageScaled, -154, -151)
  35. gen_object_model_3d_from_points (X, Y, Z, ObjectModel3D)
  36. dev_get_window (WindowHandle)
  37. visualize_object_model_3d (WindowHandle, ObjectModel3D, [], [], ['lut','color_attrib','disp_pose'], ['color1','coord_z','true'], [], [], [], PoseOut)
复制代码
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表