首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pykinect2从单个像素KinectV2中提取深度数据

pykinect2从单个像素KinectV2中提取深度数据
EN

Stack Overflow用户
提问于 2018-12-24 00:41:38
回答 1查看 732关注 0票数 0

当我打印X,Y坐标时,它会起作用。当我尝试打印像素深度数据时,它不起作用。我尝试使用的.The代码是从如何提取单击像素的RGB值修改而来的。我遇到的问题是如何解析出要打印的深度数据。

下面是代码:

代码语言:javascript
复制
kinect = PyKinectRuntime.PyKinectRuntime(PyKinectV2.FrameSourceTypes_Depth)

while True:
    # --- Getting frames and drawing
    if kinect.has_new_depth_frame():
        frame = kinect.get_last_depth_frame()
        frameD = kinect.get_last_depth_frame()
        frameD = kinect._depth_frame_data
        #frameD = frame.astype(np.uint8)
        frame = frame.astype(np.uint8)
        frame = np.reshape(frame, (424, 512))
        output = cv2.cvtColor(frame, cv2.COLOR_GRAY2BGR)
        def click_event(event, x, y, flags, param):
            if event == cv2.EVENT_LBUTTONDOWN:
                print(x, y)
            if event == cv2.EVENT_RBUTTONDOWN:
                Pixel_Depth = output[x, y , 1]
                print(Pixel_Depth)
        #output = cv2.bilateralFilter(output, 1, 150, 75)
        cv2.imshow('KINECT Video Stream', output)
        cv2.setMouseCallback('KINECT Video Stream', click_event)
        output = None

    key = cv2.waitKey(1)
EN

回答 1

Stack Overflow用户

发布于 2018-12-24 23:26:54

为了让它工作,我必须指定像素数,而不是"frameD = kinect._depth_frame_data“的x,y坐标。

下面是代码:

代码语言:javascript
复制
rom pykinect2 import PyKinectV2
from pykinect2.PyKinectV2 import *
from pykinect2 import PyKinectRuntime
import numpy as np
import cv2

kinect = PyKinectRuntime.PyKinectRuntime(PyKinectV2.FrameSourceTypes_Depth)

while True:
    # --- Getting frames and drawing
    if kinect.has_new_depth_frame():
        frame = kinect.get_last_depth_frame()
        frameD = kinect._depth_frame_data
        frame = frame.astype(np.uint8)
        frame = np.reshape(frame, (424, 512))
        frame = cv2.cvtColor(frame, cv2.COLOR_GRAY2RGB)
        def click_event(event, x, y, flags, param):
            if event == cv2.EVENT_LBUTTONDOWN:
                print(x, y)
            if event == cv2.EVENT_RBUTTONDOWN:
                Pixel_Depth = frameD[((y * 512) + x)]
                print(Pixel_Depth)
        ##output = cv2.bilateralFilter(output, 1, 150, 75)
        cv2.imshow('KINECT Video Stream', frame)
        cv2.setMouseCallback('KINECT Video Stream', click_event)
        output = None

    key = cv2.waitKey(1)
    if key == 27: break
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53905324

复制
相关文章

相似问题

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