IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Preview camera


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 29
    Par défaut Preview camera
    Bonjour tout le monde !!

    Me revoici avec un piti problème bien prise de tête :

    Petit résumé : je dois créer une application qui décode les codes-barres a partir de la camera du téléphone (dur dur). Pour cela, je crée une instance de la camera, je récupère mes previews et je leur applique le traitement de decodage dans un thread créé juste pour ça (oh le petit chanceux).

    J'ai actuellement des problèmes avec ma récupération des previewframes de ma camera, puisque des que je termine le traitement de ma première preview, mon programme principal ne me récupère pas mes frames (mais les affiche à l'écran de l'émulateur).
    A savoir que lorsque j'enlève mon thread de mon programme, mes preview sont bien récupérées en boucle tant que je n'arrête pas la camera.

    Voila le code qui me permet de récupérer mes previews :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Camera.PreviewCallback mPreviewCallback = new Camera.PreviewCallback() {	    	
    		    public void onPreviewFrame(byte[] data, Camera mCamera){
    		    	Log.e(TAG, "onPreviewFrame");
    		    	//Si on récupère un tableau "valide"
    		    	if (data!=null) {
    		    		//si on a pas un traitement en cours, on lance le decodage.
    		    		if (traitement==false){
    		    			traitement=true;
    		    			imgArray=data.clone();
                                            //lancement du thread
    		    			startLongRunningOperation();
    		    			Log.e(TAG, "et le booleen est..."+traitement);
    		    		}
    		    	}
    		    	else {
    		    		Toast.makeText(mContext, "impossible de traiter l'image",Toast.LENGTH_LONG).show();		    		
    		    	}
     
    		    }
    	};



    et ici le code de mon thread :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     protected void startLongRunningOperation() {
     
            // Fire off a thread to do some work that we shouldn't do directly in the UI thread
            Thread t = new Thread() {
                public void run() {
                	j++; Log.e(TAG, "number........"+j);
                	mResults = ZDecoder(imgArray);
    	    		Log.e(TAG, "on est sorti du ZDecoder"+j); 
                    traitement=false;
                }
            };
            t.start();
        }


    Vous avez 4 heures, ce sera ramassé, noté et la présentation est prise en compte dans le barème, donc on s'applique ! xD


    Nan je déconne. Si quelqu'un peut m'aider, merci !!

    EDIT :

    Après avoir essayé d'intégrer mon traitement directement dans mon OnPreviewFrame, je me retrouve avec un joli message d'erreur "Out of memory on a 307640-byte allocation". Donc, cela voudrait dire que ma mémoire ne se vide pas entre 2 traitements consécutifs. Ce que je trouve assez bizarre. Je travaille sous android 1.5, et je me demande si le système de gestion de mémoire est bien géré sur cette version ...

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Par défaut
    Il faut voire le projet Zxing ( open source) dont le code pourra t'inspirer à realiser facilement pour toi.

    http://code.google.com/p/zxing/

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 29
    Par défaut
    Merci Jah mais... j'utilise déjà Zxing xD

    Mais du coup je me suis rabattu par un décodage par photo. Ainsi, je n'ai pas besoin d'utiliser de thread. Et puis je pense au final que c'était ma fonction de conversion du format YUV422 des frames de la camera vers du RGB qui devait mal convertir, et du coup, pendant le décodage ça plantait...

    @+

  4. #4
    Nouveau candidat au Club
    Inscrit en
    Avril 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 2
    Par défaut
    Bonjour !

    Avec l'api 8, une nouvelle methode a vu le jour concernant le format YUV.

    YuvImage

    Notamment CompressToJpeg qui semble faire ce que tu cherches.

    Mes devices sont sur le 2.1 et je dois donc décoder moi même le format YUV des preview frame et j'ai un résultat vraiment horrible.

    Mon problème est que je ne sais pas si le problème de qualité vient de mon device, de la conversion YUV to RGB ou bien du OnPreviewFrame.

    Je vais bientôt recevoir un Nexus One et donc passer a la 2.2, mais si quelqu'un a déjà eu l'occasion de tester cette méthode dans le cadre d'une preview frame je suis intéressé par les retour !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 29
    Par défaut
    Avec l'api 8, une nouvelle methode a vu le jour concernant le format YUV.

    YuvImage

    Notamment CompressToJpeg qui semble faire ce que tu cherches.
    OK, effectivement c'est ça qu'il m'aurait fallu. Enfin vu que je programme sous 1.5 (rétro-compatibilité oblige) je peux pas l'utiliser !! Et puis je me suis rabattu sur une autre méthode du coup, alors j'vais pas faire marche arrière.

    Mon problème est que je ne sais pas si le problème de qualité vient de mon device, de la conversion YUV to RGB ou bien du OnPreviewFrame.
    Quand tu prends une photo, de toute façon c'est une preview convertie. Ça ne vient donc pas de la méthode OnPreviewFrame. Et à moins que ta fonction de conversion soit mauvaise, tu ne dois pas perdre en qualité en passant du YUV au RGB (même si le contraire n'est pas vrai).

    Enfin merci pour l'info !

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 48
    Par défaut
    salut tout le monde , j'ai un petit probleme qui me prend beaucoup de temps voila je récupère la data de mon onPreviewFrame mais des que je stocke cette donnée dans une Bitmap,sa crash
    sa crash pas au niveau e stockage mais je ne peux manipuler mon objet Bitmap voici un bout de code ou je vais vous montrez mes probleme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public void onPreviewFrame(byte[] data, Camera camera) {
    // TODO Auto-generated method stub
    Bitmap bmp=BitmapFactory.decodeByteArray(data,0, data.length);
    // jusqu'à la ça va je pense qu'il stocke bien mais:cry:
    int s=bmp.getPixel(1,1);//la sa donne rien
    int w=bmp.getWidth();//et la non plus
    int h=bmp.getHeight();// et la aussi
    					}
    à l'aide, AYA wiw

Discussions similaires

  1. Camera preview reste blanc, mais aucuns crashs !
    Par Cetras3d dans le forum Android
    Réponses: 0
    Dernier message: 14/06/2014, 12h53
  2. Prise de photo automatique et preview Camera
    Par Nalianne dans le forum Android
    Réponses: 2
    Dernier message: 08/04/2013, 12h53
  3. Scale et crop d'une preview Camera
    Par fazermokeur dans le forum Android
    Réponses: 2
    Dernier message: 08/02/2012, 16h27
  4. Ecrire sur la preview de la camera
    Par benthebest dans le forum Android
    Réponses: 3
    Dernier message: 04/02/2012, 23h36
  5. Live Camera Previews in Android
    Par anwar1987 dans le forum API standards et tierces
    Réponses: 12
    Dernier message: 08/07/2011, 18h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo