首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pykinect2深度帧被截断

pykinect2深度帧被截断
EN

Stack Overflow用户
提问于 2017-11-10 15:28:17
回答 2查看 653关注 0票数 1

我正在尝试使用PyKinect2模块从Kinect v2设备获取深度帧。我遵循了here提供的示例。我可以看到深度帧,但它们出现在截断的PyGame窗口中,尽管帧的大小是512x424,这是它应该的大小。

depth_frame

我使用PyKinect2提供的get_last_depth_frame()方法,并使用以下代码将其绘制在表面上。

代码语言:javascript
复制
def draw_depth_frame(self, frame, target_surface):
    target_surface.lock()
    address = self._kinect.surface_as_array(target_surface.get_buffer())
    ctypes.memmove(address, frame.ctypes.data, frame.size)
    del address
    target_surface.unlock()
EN

回答 2

Stack Overflow用户

发布于 2018-08-02 09:46:52

我没有什么好评论的。所以我把它写在这里。我认为你需要3个通道来填充内存到所需的长度。尝尝这个

代码语言:javascript
复制
f8=np.uint8(frame.clip(1,4000)/16.)    
frame8bit=np.dstack((f8,f8,f8))

然后从frame8bit中移动,而不是从原始框架中。

票数 1
EN

Stack Overflow用户

发布于 2018-09-01 20:07:43

首先,您必须将Surface大小更改为24位:

__init__(self)函数中:

代码语言:javascript
复制
self._depth_frame_surface = pygame.Surface((self._kinect.depth_frame_desc.Width,
self._kinect.depth_frame_desc.Height),
0, 24)

然后,您应该更改self._screen以获取深度、框架宽度和高度:

代码语言:javascript
复制
self._screen = pygame.display.set_mode((self._kinect.depth_frame_desc.Width,
self._kinect.depth_frame_desc.Height), pygame.HWSURFACE | pygame.DOUBLEBUF | pygame.RESIZABLE,
32)

最后,像@Shuangjun建议的那样绘制深度框:

代码语言:javascript
复制
def draw_depth_frame(self, frame, target_surface):
    target_surface.lock()
    f8 = np.uint8(frame.clip(1, 4000) / 16.)
    frame8bit = np.dstack((f8, f8, f8))
    address = self._kinect.surface_as_array(target_surface.get_buffer())
    ctypes.memmove(address, frame8bit.ctypes.data, frame8bit.size)
    del address
    target_surface.unlock()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47217691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档