我最近有一个kinect相机使用libfreenect和pygame在this guy's work之后使用覆盆子pi 3,我得到了大约13fps但是我想知道是否有更好/更快的方式获得更多fps或者只是硬件限制?
现在是代码:
from freenect import sync_get_depth as get_depth
import pygame
import numpy
import sys
def make_gamma():
num_pix = 2048 # there's 2048 different possible depth values
npf = float(num_pix)
_gamma = numpy.empty((num_pix, 3), dtype=numpy.uint16)
for i in xrange(num_pix):
if i < 950:
a = numpy.array([255, 0, 0], dtype=numpy.uint8)
else:
a = numpy.array([0, 0, 0], dtype=numpy.uint8)
_gamma[i] = a
return _gamma
fpsClock = pygame.time.Clock()
FPS = 30 # kinect only outputs 30 fps
disp_size = (640, 480)
pygame.init()
screen = pygame.display.set_mode(disp_size)
pygame.display.set_caption('Kinect depth display')
font = pygame.font.Font('/usr/share/fonts/truetype/freefont/FreeSerif.ttf', 32)
gamma = make_gamma()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
fps_text = "FPS: {0:.2f}".format(fpsClock.get_fps())
# draw the pixels
depth = numpy.rot90(get_depth()[0])
pixels = gamma[depth]
temp_surface = pygame.Surface(disp_size)
pygame.surfarray.blit_array(temp_surface, pixels)
pygame.transform.scale(temp_surface, disp_size, screen)
screen.blit(font.render(fps_text, 1, (255, 255, 255)), (30, 30))
pygame.display.flip()
fpsClock.tick(FPS)
答案 0 :(得分:0)
您可以使用C / C ++本机代码读取帧并通过系统管道传输它们。您需要将深度数据编码为十六进制值并将其打印到控制台。