线程评级:
(API) Cam2D_Snapshot深度图像返回错误的深度值
# 1
复制:将相机放置在场景中,并将其指向30x50x10毫米的块(附)。用以下方法为其拍摄深度图像:
代码:
从robodk导入robolink
将numpy导入为np
进口操作系统
导入的时间
RDK = robolink.Robolink()

#获取深度快照
cam = RDK。项目(深度相机)
cam.setParam(“开放”)
time . sleep (0.1)
RDK.Cam2D_Snapshot(os.path.join(os.path.abspath('.'), 'tmp.grey32'), cam, 'Depth')
Grey32 = np.fromfile('tmp.grey32', dtype='>u4')
W, h = grey32[:2]
Img = np.flipud(np。(2:], (h, w)))
Img = (Img / np.iinfo(np.uint32).max) # rescale到0.0到1.0
FAR_LENGTH = 100 #无论FAR_LENGTH设置为什么
img = img * FAR_LENGTH
Img = Img .astype(np.uint16)

使用open3d保存为pointcloud
将open3d作为o3d导入
FOV = 63.91 # FOV的设置
fy = h / (2*np.tan(np.radians(FOV) / 2)) # FOV为相机视场
本征= o3d.camera.PinholeCameraIntrinsic(
宽度= w,
身高= h,
fx=fy, # fx和fy使用相同的值
=年度财政年度
Cx =w / 2,
Cy =h / 2,


pcd = o3d.geometry.PointCloud.create_from_depth_image(o3d.geometry.Image(img), intrinsic)
o3d.io.write_point_cloud (pcd。xyz', pcd, write_ascii=True)
打开生成的pcd。使用MeshLab或pointcloud查看器选择xyz文件。

预期结果:生成的点云是一个矩形块,尺寸为30x50x10。

实际结果:生成的点云的尺寸不是30x50x10,角度也不是90度。

修复z-distortion:如果我在将img归一化到0到1之间之后插入以下一行:

代码:
Img = Img / (2 - Img)
然后得到的点云具有正确的尺寸。请注意,上面的变换是0到0和1到1,并将直线和平面转换为直线和平面,但扭曲了距离和角度。也许有人在某处插入了某种伽玛校正?


附加文件
.stl 30 x50x10.stl(大小:684字节/下载:94)2022世界杯国家队名单
感谢您的详细反馈。经过一些内部讨论和测试,我们能够用最新版本的RoboDK修复深度图。
您可以下载最新版2022世界杯国家队名单本的RoboDK(版本5.4.3,目前只更新了Windows二进制文件):
//www.sinclairbody.com/2022世界杯国家队名单download

现在当你使用这个公式(32位浮点数值精度)时,它应该是非常准确的:
img = img * FAR_LENGTH - NEAR_LENGTH
注意这是与传感器平面的距离(相机所连接的参考框架的位置)。

让我们知道,如果这是困惑或不是你在寻找的东西。
# 3
谢谢。我在文档中没有看到类似“NEAR_LENGTH”的东西;你是说焦距吗?看起来在你建议的翻译后可能的值的范围将是[-NEAR_LENGTH, FAR_LENGTH -NEAR_LENGTH),这是正确的吗?
# 4
我说的NEAR_LENGTH是指焦距。

FAR_LENGTH是焦距加上工作距离。

例如,如果您设置焦距为10mm,工作距离为2000mm:
  • NEAR_LENGTH =焦距= 10毫米
  • FAR_LENGTH =焦距+工作距离= 2010 mm
距离计算公式不应返回负值。它应该给你从传感器平面(RoboDK中的参考系)的距离,而不是焦点。

如果有什么不合理的地方请告诉我们。
# 5
对于那些感兴趣的人,这个例子展示了如何通过套接字检索深度图,从点云创建一个网格,并将其导入RoboDK:https://github.com/RoboDK/RoboDK-API/blo..._Camera.py

感谢hn-cso的贡献。
有关RoboDK及其功能的有用信息,请访问我们的2022世界杯32强赛程表时间 通过观看我们的教程YouTube频道
# 6
谢谢。我只能访问macOS和linux,所以我还没有机会尝试这些更改。我使用的版本是5.4.1.21935 -我可以期望新版本(由RDK.Version()返回)具有5.4.3的形式。Xxxxx,还是以日期为基础?(您的示例脚本引用的版本为“5.4.3-2022-06-20”。)我想根据版本有条件地重新缩放,因为我可能无法一次更新所有地方。
# 7
我们将在本周发布Linux和macOS的新版本。
RDK.Version()将返回5.4.3.22248或更高。
有关RoboDK及其功能的有用信息,请访问我们的2022世界杯32强赛程表时间 通过观看我们的教程YouTube频道
# 8
macOS下载有什么更新吗?2022世界杯国家队名单我看到。dmg下载的“最后修改”是2月21日。2022世界杯国家队名单

% http HEAD//www.sinclairbody.com/2022世界杯国家队名单downloads/Install-RoboDK.dmg
Http /1.1 200 ok
Accept-Ranges:字节
cache - control:信息= 86400
连接:升级,保持连接
内容编码:br
内容类型:应用程序/ x-apple-diskimage
时间:2022年7月16日星期六04:23:43 GMT
ETag:“2 ee006c-a309f39-5d88e697205a7-br”
截止日期:2022年7月17日星期日04:23:43 GMT
点火电极:超时= 5
最后修改日期:2022年2月21日星期一22:04:09
Apache服务器:
升级:h2, h2c
不同:接受编码
# 9
我对延迟感到抱歉,我们需要更长的时间来为MacOS提供更新。这还需要几天的时间。我会与你保持联络。

Linux版本最近应该已经更新了。如果您在Linux上仍然有阻塞问题,请告诉我们。
我们刚刚为MacOS更新了RoboDK。你可以在这里下载:2022世界杯国家队名单
//www.sinclairbody.com/2022世界杯国家队名单download

MacOS最新版本支持加载STEP和IGES文件。




浏览此线程的用户:
1客人(年代)