• Aucun résultat trouvé

Sommaire : But du TP....................................................................................................................................1Travail à faire.......................................................................................

N/A
N/A
Protected

Academic year: 2022

Partager "Sommaire : But du TP....................................................................................................................................1Travail à faire......................................................................................."

Copied!
3
0
0

Texte intégral

(1)

Application à un système vidéo

Romain Raveaux

Sommaire :

But du TP...1 Travail à faire...1 à Rendre :...5

But du TP

1°) Visualiser les images issues de la camera.

2°) Passer de l’espace couleur YUV à l’espace couleur RGB.

3°) Monitorer l’exécution en calculant le nombre de Frame Per Second

Travail à faire

1°) Créer un projet Android de type HelloWorld (un projet simple de base) 2°) Récupérer la classe FrameProcessing via le lien suivant :

https://www.dropbox.com/s/28j2jcuue0mmv37/FramProcessing.java?dl=0 3°) La méthode de traitement de la Frame en cours :

protected Bitmap processFrame(byte[] data ) {

int frameSize = getFrameWidth() * getFrameHeight();

int[] rgba = new int[frameSize];

for (int i = 0; i < getFrameHeight(); i++)

for (int j = 0; j < getFrameWidth(); j++) {

int y = (0xff & ((int) data[i * getFrameWidth() + j]));

int u = (0xff & ((int) data[frameSize + (i >> 1) * getFrameWidth() + (j & ~1) + 0]));

int v = (0xff & ((int) data[frameSize + (i >> 1) * getFrameWidth() + (j & ~1) + 1]));

y = y < 16 ? 16 : y;

int r = Math.round(1.164f * (y - 16) + 1.596f * (v - 128));

int g = Math.round(1.164f * (y - 16) - 0.813f * (v - 128) - 0.391f * (u - 128));

int b = Math.round(1.164f * (y - 16) + 2.018f * (u - 128));

r = r < 0 ? 0 : (r > 255 ? 255 : r);

g = g < 0 ? 0 : (g > 255 ? 255 : g);

b = b < 0 ? 0 : (b > 255 ? 255 : b);

rgba[i * getFrameWidth() + j] = 0xff000000 + (b << 16) + (g << 8) + r;

}

Bitmap bmp = Bitmap.createBitmap(getFrameWidth(), getFrameHeight(), Bitmap.Config.ARGB_8888);

bmp.setPixels(rgba, 0/* offset */, getFrameWidth() /* stride */, 0, 0, getFrameWidth(), getFrameHeight());

return bmp;

}

5°) Expliquer ce que fait la fonction processFrame ?

6°) Récupérer la classe abstraite MyVideoView qui étend la classe SurfaceView et qui implémente les interfaces suivantes : SurfaceHolder.Callback et Runnable

https://www.dropbox.com/s/owctss2jeup0tyj/MyVideoView.java?dl=0

7°) Chercher et décrire à quoi sert la classe SurfaceView ?

(2)

8°) Chercher et décrire à quoi sert l’interface SurfaceHolder.Callback ? 9°) Chercher et décrire à quoi sert l’interface Runnable ?

10°) A quoi sert les méthode getFrameWidth et getFrameHeight ? 11°) A quoi sert la méthode openCamera ?

12°) A quoi sert la méthode releaseCamera ? 13°) A quoi sert la méthode setupCamera ? Lister les grandes étapes de cette fonction ? 14°) A quoi sert la méthode surfaceChanged ? 15°) A quoi sert la méthode surfaceCreated ? 16°) Que fait la méthode run ?

(3)

17°) Dans votre activité principale, ajouter à votre layout un objet de type FrameProcessing après l’avoir instancié.

18°) Compiler et étudier les éventuels erreurs.

19°) Lancer l’application sur un émulateur.

21°) Créer la classe FramePerSecond qui permettra d’écrire à l’écran le nombre de frame par seconde de votre application tout en affichant la vidéo.

Vous utiliserez le Canvas pour écrire à l'ecran.

à Rendre :

1°) Le code source commenté

2°) Un rapport décrivant le fonctionnement et le but de ce TP. Qu’avez-vous compris ? Avez- vous rencontré des problèmes ? Ecrivez les éléments qui permettraient à un de vos collègues de faire ce TP facilement.

3°) Le tout doit être déposé sur moodle pour la semaine suivant le TP. (ou si moodle était récalcitrant par email à votre enseignant)

Références

Documents relatifs

Exercice1 : compléter et exécuter le programme Pascal intitulé CALCULETTE, qui fait lire dans cet ordre : un réel, un opérateur arithmétique (+, -, *, /) et un autre réel.. A

De plus, les poulies peuvent tourner autour de la table, ce qui permet de modifier la direction de ces forces.. Remarque : Les poulies ne modifient pas l’intensité de la

Proposer un montage permettant de générer un signal triangulaire et un signal créneau dont on peut modifier le rapport cyclique. Réaliser ce montage et vérifier

- L’autre voie de l’oscilloscope est branchée aux bornes de la bobine d’induction, pour observer la tension induite e(t) dont la valeur efficace E est mesurée au voltmètre

A l'issue de chaque exercice, l'enseignant doit vérifier la solution proposée et le programme de test, et peut demander des corrections ou modifications..

Si on choisit de comparer plusieurs valeurs de la résistance totale du circuit (R = R 0 + r), ce n'est pas trop compliqué… mais si on choisit de mesurer la tension aux bornes de R

(Le codage de l’information se fait sur 8 bits comme pour les ordinateurs). Indiquer le temps qu’il faudrait pour charger une page remplie d’informations. Heureusement que le

* Importer les points dans le tableur et modéliser le graphe : en déduire la valeur de la période des oscillations.. Enregistrement du mouvement d'un oscillateur avec