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

OpenCV Discussion :

Afficher une IplImage pour le web


Sujet :

OpenCV

Vue hybride

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 24
    Par défaut Afficher une IplImage pour le web
    Bonjour à tous

    Je souhaite créer une petite application openCV pour m'amuser.
    Le point qui me bloque est l'affiche d'une image sur un navigateur web.
    En effet, je développe cette application sur un serveur, et je souhaite qu'on puisse y accéder via le cgi-bin.

    J'ai donc créé mon appli, et dans celle-ci se trouve une image IplImage.

    Je souhaiterai donc savoir si vous avez des idées sur comment je pourrais gérer son affichage web.
    J'avais pensé à un simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout<<"Content-Type: image/jpeg"
    Puis ensuite l'affichage de l'IplImage converti en jpg puis encodé en base64.

    Mais j'avoue que je sais même pas si c'est faisable. Y a-til plus simple ? J'ai vraiment besoin de vos lumières !!!

    PS :Je précise que je suis plutot débutant en c++

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 24
    Par défaut
    J'ai essayé de commencé par ça :

    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
     
            IplImage* img;
    	img = cvCreateImage (cvSize (width,width), IPL_DEPTH_8U, 1);
    	uchar *p;
    	for (y = 0; y < img->height; ++y){
    		for (x = 0; x < img->width; ++x){
    			p = cvPtr2D (img, y, x, NULL);
    			if(myarray[y*img->width+x]>0){
    				*p = 255;
    			}else{
    				*p = 0;
    			}
    		}
    	}
    	std::vector<uchar>outbuf;
    	std::vector<int> params;
    	params.push_back(CV_IMWRITE_JPEG_QUALITY);
    	params.push_back(100);
    	cv::imencode(".jpg", img, outbuf, params);
    Je précise que myarray est défini comme suit : int *myarray;.

    Mais quand je fais tourner mon programme, j'obtiens ces erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /home/***/cgi-bin/src/main.cpp: In function int main():
     
    /home/***/cgi-bin/src/main.cpp:55:43: error: invalid initialization of reference of type cv::InputArray {aka const cv::_InputArray&} from expression of type IplImage {aka _IplImage*}
     
    /usr/include/opencv2/highgui/highgui.hpp:137:19: error: in passing argument 2 of bool cv::imencode(const string&, cv::InputArray, std::vector<unsigned char>&, const std::vector<int>&)
     
    make[2]: *** [CMakeFiles/Prog.cgi.dir/src/main.cpp.o] Error 1
     
    make[1]: *** [CMakeFiles/Prog.cgi.dir/all] Error 2
     
    make: *** [all] Error 2
    J'aurais besoin de votre aide pour mener à bien mon petit programme, et notamment corriger ce bug.

    Merci par avance à vous

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Tu mélanges le C et C++. Tes 14 premières lignes sont du C,
    On utilise en C++ la classe cv::Mat pour manipuler les images et non IplImage venant du C.
    Et l'erreur vient du fait que la fonction cv::imencode (qui elle est bien du C++ ) veut du cv::Mat et non IplImage en entrée.

    PS : Avant que tu ne me le demandes, je n'ai pas d'idée par rapport à la question initiale.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 24
    Par défaut
    Hey hey, je m'en suis rendu compte après coup. Tout est encore très confus dans mon esprit, mais j'ai corrigé mon code de la sorte

    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
    30
    31
    32
    33
    34
    35
    36
     
     
    	cout << "Content-Type:image/jpeg\r\n\r\n";
     
    	unsigned char *frame;
    	char px[2];
    	int x, y, w;
    	QRcode *qrcode;
    	QRtools tools;
     
    	qrcode = QRcode_encodeString("http://www.lequipe.fr", 4, QR_ECLEVEL_H, QR_MODE_8, 1);
     
    	//S'il n'y a pas d'erreur, alors on traite le qrcode
    	if(tools.checkQrcodeError(qrcode)){
    		tools.binarize(qrcode,true);
     
    		Mat qrMat (tools.width, tools.width, CV_8UC1); 
    		//On rempli la matrice avec le tableau d'int du qrcode
    		for(int y=0;y<tools.width;y++){			
    			for(int x=0;x<tools.width;x++){
    			if(tools.binQrCode[y*tools.width+x] > 0)
    				qrMat.at<uchar> (y, x) = 0;
    			else
    				qrMat.at<uchar> (y, x) = 255;
    			}
    		}
     
    		//On encode l'image en jpeg
    		std::vector<uchar>outbuf;
    		std::vector<int> params;
    		params.push_back(CV_IMWRITE_JPEG_QUALITY);
    		params.push_back(100);
    		imencode(".jpg", qrMat, outbuf, params); 
    		//cout<<outbuf;
     
    	}

    Ceci est mon app web c++ que j'ai dans le cgi-bin de mon serveur. Je souhaite juste le faire afficher l'image jpeg qui se trouve dans outbuf. Je ne maitrise pas bien le c++, mais en php, on aurais pu imaginer quelque chose comme ça :

    echo 'data:image/jpeg;base64,' . base64_encode($data);

    N'y a-t-il pas un moyen d'y parvenir ?

Discussions similaires

  1. Compiler une API pour serveur Web IIS
    Par [DreaMs] dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 05/10/2007, 09h24
  2. Afficher une IplImage dans une picturebox
    Par Sixdeux dans le forum C#
    Réponses: 14
    Dernier message: 15/05/2007, 16h43
  3. Enregistrer une animation pour le web
    Par paradeofphp dans le forum Flash
    Réponses: 1
    Dernier message: 01/08/2006, 14h30
  4. Quel langage pour une barre pour navigateur web type google bar ?
    Par ido_web dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 16/05/2006, 15h32
  5. Afficher une information pour la saisie d'un formulaire
    Par Laffont Roselyne dans le forum Access
    Réponses: 1
    Dernier message: 08/11/2005, 14h57

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