Il lavoro e' diviso in due parti. In fase di acquisizione vengono salvati i dati del sensore di distanza del Kinect ogni 5 secondi (il Kinect genera una mappa di 640x480 punti per ogni immagini ed i dati acquisiti da PyOpenNi sono espressi direttamente in millimetri)
Successivamente si lancia lo script di lettura.py come
python lettura.py > dati.asc
il file .asc viene poi utilizzato dal programma Meshlab (presenti anche repository di Ubuntu) per visualizzare la nuvola dei punti. (Nell'esempio sono stati i punti a distanza maggiore di 1 metro per selezionare solo i punti del volto)
acquisisci.py
-----------------------------------------------
import time
import pickle
import numpy as np
import Image
import scipy
ctx = Context()
ctx.init()
# Create a depth generator
depth = DepthGenerator()
depth.create(ctx)
# Set it to VGA maps at 30 FPS
depth.set_resolution_preset(RES_VGA)
depth.fps = 30
# Start generating
ctx.start_generating_all()
contatore =1
while True:
# Update to next frame
nRetVal = ctx.wait_one_update_all(depth)
depthMap = depth.map
depthMap2 = np.array(depthMap)
f = open("faccia"+str(contatore)+".txt","w+b")
pickle.dump(depthMap2,f)
f.close()
print contatore
contatore = contatore + 1
time.sleep(5)
-----------------------------------------------
lettura.py
-----------------------------------------------
import pickle
import numpy
posizione = 0
f = open("faccia5.txt")
data = pickle.load(f)
f.close
for i in range(img.size[0]):
for j in range(img.size[1]):
print str(i)+","+str(j)+","+str(data[posizione])
posizione = posizione + 1
Nessun commento:
Posta un commento