PhotoGallery Con il Kinect della Microsoft XBox360

Il KinectGallery è un progetto che permette di visualizzare una photogallery attraverso il semplice movimento delle mani.Immaginate di poter visualizzare le offerte del giorno di un negozio semplicemente posizionandosi di fronte allo pannello illustrativo.

In questo modo i proprietari delle rispettive attività non dovranno piu preoccuparsi dello stato di degrado delle loro risorse hardware; in quanto non saranno direttamente maneggiate dall'utente finale.
Inoltre visualizzare in questo modo le informazioni risulta essere interessante e allo stesso tempo divertente!

Materiale richiesto per il progetto:
Microsoft Kinect Sensor(acquistabile semplicemente da un negozio di elettronica o da un ipermercato);
Microsoft Visual C# 2010(consiglio di utilizzare la versione Express Edition scaricabile gratuitamente da questo link: http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-csharp-express)
Microsoft Kinect SDK scaricabile gratuitamente da questo link: http://www.kinectforwindows.org/download/;
Coding4Fun ToolKit scaricabile gratuitamente da questo link: http://coding4fun.codeplex.com/
Picasa scaricabile direttamente da questo link: http://picasa.google.com/

Implementiamo il progetto:

Il progetto è composto fondamentalmente in 3 sezioni:

Implementazione del Software per il riconoscimento dello Skeletal(termine utilizzato dal framework Kinect per il riconoscomento del corpo);
Implementazione del Driver per la gestione del cursore del mouse;
Implementazione della photogallery tramite Picasa.

Iniziamo con l'implementazione del software per il riconoscimento dello Skeletal:

Lo Skeletal( come dice la parola stessa) è una mappatura di tutti i punti fondamentali di un corpo che si presenta davanti al kinect.
Questo Skeletal è composto da tanti Joint che indicano singolarmente i punti di giunzione dello Skeletal appena mappato.

Per avere un'idea ancora più chiara della spiegazione prima accennata analizziamo l'immagine qui sotto:

Tutti i cerchi arancioni illustrati in questa immagine sono i joint.
In questo progetto non utilizzeremo tutti i joints che ci fornisce l'sdk ma andremo ad utilizzare solo quelli elencati qui sotto:

Head;
Hand_Right;
Hand_Left;

Elencati i Joints di cui abbiamo bisogno per l'implementazione del software procediamo alla creazione del progetto.

Creazione di un progetto Windows Form:

Per prima cosa, come da titolo, creiamo un progetto “Windows Form” e assegnamoli un titolo a scelta.
Creato il progetto clicchiamo con il tasto destro su di esso e andiamoli ad assegnare il riferimento alle librerie dell'SDK di Microsoft Kinect:

Assegnate le librerie risulterà fondamentale importare le librerie con una direttiva using:

“using Microsoft.Research.Kinect.Nui;
using Coding4Fun.Kinect.Wpf;”


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Research.Kinect.Nui;
using Coding4Fun.Kinect.WinForm;

namespace SkeletalArcticle
{
    public partial class Form1 : Form
    {
        Runtime nui;
        public Form1()
        {
            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            nui = new Runtime();
            nui.Initialize(RuntimeOptions.UseSkeletalTracking);
            nui.SkeletonFrameReady += new EventHandler(nui_SkeletonFrameReady);
        }

        void nui_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
        {
            SkeletonFrame allSkeletons = e.SkeletonFrame;

            //get the first tracked skeleton
            SkeletonData skeleton = (from s in allSkeletons.Skeletons
                                     where s.TrackingState == SkeletonTrackingState.Tracked
                                     select s).FirstOrDefault();
            try
            {

                Joint HandRight = skeleton.Joints[JointID.HandRight].ScaleTo(640, 480, .5f, .5f);
                SetCursorPosition(skeleton.Joints[JointID.HandRight]);
               
            }
            catch (System.NullReferenceException ex)
            {

            }

        }
        private void SetCursorPosition(Joint joint)
        {
            var scaledJoint = joint.ScaleTo(640, 480, .5f, .5f);
            Point point = new Point();
            point.X = (int)scaledJoint.Position.X;
            point.Y = (int)scaledJoint.Position.Y;
            Cursor.Position = point;
        }

    }
}

Codice Sorgente Gestore Skeletal Viewer e Driver Mouse;

Creazione del Web Album Con Picasa:
Dopo avere creato il software per gestire il movimento della mano e associarlo al cursore del mouse, passiamo alla creazione di un web gallery 3d con picasa.
In particolare ci occuperemo della creazione di una photo gallery 3d.
Per prima cosa apriamo Picasa e selezioniamo un set di foto che ci interessa!

Successivamente andiamo su “Cartella->Esporta Come Pagina HTML” e selezioniamo l'effetto grafico Caroussel 3D.

Alla fine dell'elaborazione verrà aperto il browser web predefinito con la galleria 3d avviata e funzionante.
Avviamo il software da noi prima implementato in C# e muoviamo la mano in direzione del Kinect!!!

Et voilà!

Osservazioni Finali e Ringraziamenti:
Tengo a precisare che tutti gli strumenti utilizzati in questo articolo sono gratuiti e di libero utilizzo in ambito hobbystico.
Ringrazio inoltre “Saverio Caminiti” per l'implementazione della slide 3d delle foto.

Antonio Blescia
Ricercatore Informatico
Bari.

Scarica subito una copia gratis

3 Commenti

  1. Avatar photo telegiangi61 19 Dicembre 2011
  2. Avatar photo Fabrizio87 20 Dicembre 2011
  3. Avatar photo divivoma 21 Dicembre 2011

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend