如何用matlab将3D打印的stl文件的顶点数据转换成三维二值图像

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用matlab将3D打印的stl文件的顶点数据转换成三维二值图像相关的知识,希望对你有一定的参考价值。

将stl文件的顶点数据读取到matlab中得到顶点数据,为了运行骨架线提取程序(Skeleton3D.m)需要转换成二值图像,有什么办法可以处理?

比如你的灰度图叫I, Bi = dec2bin(I(:),8); Bi是按列从左到右写的二进制值了 参考技术A //读入数据 fid = fopen('path/to/b.txt', 'r'); data = fscanf(fid,'%s,%f',[2 inf]); //绘图 plot(data[;1],data[;2])

如何用 D 语言正确打印 uint64_t (dtrace)

【中文标题】如何用 D 语言正确打印 uint64_t (dtrace)【英文标题】:How to print uint64_t properly in D language (dtrace) 【发布时间】:2015-07-14 18:01:38 【问题描述】:

我正在尝试使用DTrace 脚本来printf 一些Solaris 类型为uint64_t(例如timestamp)的内核级信息。如何在我的DTrace 代码中安全准确地打印uint64_t

我知道在 C 中打印uint64_t 的正确方法是:

#define __STDC_FORMAT_MACROS
#include <sys/inttypes.h> //sys: Kernel level

uint64_t timestamp;
printf("%"PRIu64"\n", timestamp);

DTrace D 中的等价物是什么? (%d 和 `%llu 不精确且危险)。

注意不要与其他名为“D”的编程语言(由 Walter Bright 开发的类似 C++ 的编程语言)混淆。

【问题讨论】:

【参考方案1】:

根据DTrace Wiki: Output Formatting:

D 编译器不需要在 printf 格式转换中使用大小前缀。 C printf 例程要求您通过添加前缀来指示参数的大小,例如 %ld 表示 long 或 %lld 表示 long long。 D 编译器知道参数的大小和类型,因此在 D printf 语句中不需要这些前缀。

此外,D 中的%d%i 格式将处理有符号或无符号整数,因此您可以使用%d%i%u 中的任何一个来打印基数中的无符号整数值10,结果都一样。

OP 在评论中询问了%Y 格式。这可用于 uint64_t 值,该值包含自 1970 年 1 月 1 日以来的纳秒数,例如内置的walltimestamp 变量。 (timestampvtimestamp 从那个时代算起。)

uint64_t 参数被解释为自 1970 年 1 月 1 日 00:00 以来的纳秒数,并以以下 cftime(3C) 格式打印:“%Y %a %b %e %T %Z。”

【讨论】:

这是否意味着我可以使用%d 安全地printf 一个uint64_t 变量,或者我应该通过%Y 打印它? 谢谢。我已经编辑了我的答案以建议使用哪种整数格式,以及%Y

以上是关于如何用matlab将3D打印的stl文件的顶点数据转换成三维二值图像的主要内容,如果未能解决你的问题,请参考以下文章

如何用java读取ASCII码STL文件

急!!如何用matlab导入asc和stl格式的点云数据,并绘制图像?

OpenGL ES——导入.stl格式的3D模型

如何用3D Slicer实现模型3D打印 / 查查362

如何用Matlab把数据分类

视觉高级篇20 # 如何用WebGL绘制3D物体?