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

C++ Discussion :

Problème fichier raw


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Par défaut Problème fichier raw
    Bonjour à tous,

    Je demande de l'aide car je travaille sur des fichier d'image ".raw" provenant d'une caméra. J'aimerais pouvoir les assembler en un seul fichier. Je teste pour le moment avec deux fichiers ".raw" pour n'en faire qu'un seul. Pensant que ce serait une simple lecture de flux, j'ai laché quelques lignes de codes que je vous mets à la suite :
    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
    21
    22
    23
    24
    25
     
    int _tmain(int argc, _TCHAR* argv[])
    {
    	ofstream fichierEcrit("test1.raw", ios::out | ios::app);
    	ifstream fichierLu("test2.raw", ios::in);
     
    	if(!fichierEcrit.bad()&& !fichierLu.bad())
    	{
    		cout << "ok\n" << endl;
     
    		stringstream contenuFichierLu;
     
    		contenuFichierLu << fichierLu.rdbuf();
    		fichierLu.close();
     
    		fichierEcrit << contenuFichierLu;
    		fichierEcrit.close();
    	}
    	else
    	{
    		cout << "nok\n" << endl;
    	}
    	while(true);
    	return 0;
    }
    Bon, vous vous doutez qu'évidement, ça ne marche pas et je me disais bien que ce format d'image, même s'il est brut, doit bien avoir quelques en-têtes quelque part à respecter pour pouvoir assembler deux images et en faire quelque chose de lisible.
    De plus, il y a un truc que je ne comprends pas. Quand j'ajoute mon flux à mon fichier dans mon code, il s'avère que la taille de mon fichier ne double pas.
    En gros si quelqu'un connaissait un peu ce type de fichier, ça me rendrait pas mal service pour voir où est situé mon souci.

    Merci d'avance.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut +sieurs pbs!
    Bonsoir,

    istream.rdbuf retourne un pointeur, si tu ne lis pas le 'contenu' tu n'écriras pas non plus voir: http://www.cplusplus.com/reference/i...eam/rdbuf.html

    Pourquoi "while (true);" ???

    Plus généralement, je chercherai à savoir comment sont codées les images et je regarderais d'abord s'il n'existe pas déjà des solutions toutes prêtes.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Par défaut
    En fait, j'ai testé à la main en ouvrant les images dans un éditeur hexa et j'ai fait un copier coller de la première a la suite de la 2eme et effectivement quand j'ouvre le résultat, j'obtiens bien une image représentant les deux collées l'une à l'autre donc ce n'est pas un problème de structure de fichier mais de code. Je vais regarder ce que tu me donnes. Je te remercie. Sinon, pour while(true), c'est juste pour garder ouvert le cmd dans lequel sort mes cout sinon ça ferme tout de suite.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Par défaut
    Merci, ça marche.
    Alors est ce que tu pourrais m'expliquer pour ça ne marche pas avec un fichier raw qui est de l'hexa alors qu'avec un txt j'arrive sans souci a rajouter des caractères à la fin d'un autre fichier texte ?

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut super...
    Citation Envoyé par AntoineeniotnA Voir le message
    Merci, ça marche.
    Alors est ce que tu pourrais m'expliquer pour ça ne marche pas avec un fichier raw qui est de l'hexa alors qu'avec un txt j'arrive sans souci a rajouter des caractères à la fin d'un autre fichier texte ?
    A priori rdbuf se fout que ce soit du texte ou du binaire...
    Possible que tu ais une erreur 'ailleurs'...
    Quel est le dernier code?
    - W
    PS: while (true); c'est une boucle infinie... pabooo
    pourquoi ne pas bloquer sur une lecture?
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Par défaut
    Salut wiztricks,

    Voilà le code qui est celui du site que tu m'as filé et qui marche très bien. J'ai enlevé la boucle infine qui ne servait plus à rien, tout va mieux :p
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    #include "stdafx.h"
    #include <fstream>
     
    using namespace std;
     
    int _tmain(int argc, _TCHAR* argv[])
    {
    	filebuf *pbuf;
    	long size;
    	char *buffer;
     
    	ofstream fichierEcrit("test1.raw", ios::out | ios::app);
    	ifstream fichierLu("test2.raw", ios::in);
     
    	pbuf = fichierLu.rdbuf();
     
    	size = pbuf->pubseekoff(0,ios::end,ios::in);
    	pbuf->pubseekpos (0,ios::in);
     
    	buffer = new char[size];
     
    	pbuf->sgetn(buffer,size);
     
    	fichierLu.close();
    	fichierEcrit.write(buffer, size);
     
    	return 0;
    }
    Merci pour le coup de main.

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut Ouch?!
    Bonjour,

    J'ai compilé ton programme sous CYGWIN (je n'ai pas mieux sous la main).
    J'ai utilisé comme fichiers ".raw" la copie de l'exécutable.
    Ca fait ce qu'on attend: à la sortie, le fichier dans lequel on 'append'e à doublé.

    => vu les résultats que tu as sur le 'texte' essaie d'ajouter le flag ios::binary dans le 'mode':

    ofstream fichierEcrit(argv[1], ios::binary | ios::out | ios::app);
    ifstream fichierLu(argv[2], ios::binary | ios::in);

    Sinon, il serait plus propre de fermer le fichier de sortie et de libérer la mémoire allouée. Ce sont de bons réflexes à prendre, mais sans rapport avec ce que tu obtiens.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Par défaut
    Je note, je note, quand tout ceci sera fini, je viendrais mettre les sources finales pour que tu vois ce que ça doit faire réellement.

Discussions similaires

  1. Problème Clé USB système de fichiers RAW
    Par Guy_L dans le forum Composants
    Réponses: 1
    Dernier message: 22/09/2009, 10h33
  2. Problème socket raw ? bizarre :~
    Par MonsieurAk dans le forum Windows
    Réponses: 2
    Dernier message: 12/07/2005, 14h12
  3. problème fichier devpak
    Par Myra67 dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 30/06/2005, 22h26
  4. [résolution de noms] [réseau] problème fichier hosts
    Par Aldo dans le forum Administration
    Réponses: 2
    Dernier message: 11/04/2005, 21h38
  5. [Debutant(e)] Problème fichier texte et vue
    Par solenn dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 21/07/2004, 09h23

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