[OpenCV 1.0] cvLoadImage, ne fonctionne pas

Signaler
Messages postés
4
Date d'inscription
lundi 4 janvier 2010
Statut
Membre
Dernière intervention
5 janvier 2010
-
Messages postés
4
Date d'inscription
vendredi 17 juillet 2009
Statut
Membre
Dernière intervention
25 mai 2011
-
Bonjour,

Je commence à apprendre OpenCV, toutefois, je rencontre déjà un problème lors de l'exécution d'un code très simple. En effet, lorsque je veux utiliser la fonction cvLoadImage, celle ci ne charge pas l'image(fond gris), quelque soit l'écriture du chemin vers le fichier.

Le code : (copier/coller du tuto du siteduzero)

#include <cv.h>
#include <highgui.h>


using namespace std;

int main()
{
//On déclare "un pointeur vers une structure IplImage" :
//En gros, on "déclare une image".
IplImage *img;

//On charge notre image depuis un fichier.
img=cvLoadImage(1,"D:\\test.png");

//On crée une fenêtre intitulée "Hello World",
//La taille de cette fenêtre s'adapte à ce qu'elle contient.
cvNamedWindow("Hello World", CV_WINDOW_AUTOSIZE);

//On affiche l'image dans la fenêtre "Hello World".
cvShowImage("Hello World", img);

//On attend que l'utilisateur appuie sur une touche (0 = indéfiniment).
cvWaitKey(0);

//Destruction de la fenêtre.
cvDestroyWindow("Hello World");

//Libération de l'IplImage (on lui passe un IplImage**).
cvReleaseImage(&img);

//Fini ^^
return 0;

}

http://img9.imageshack.us/img9/5742/exemple2q.jpg
http://img31.imageshack.us/img31/8113/exemple1u.jpg

Si quelqu'un a une idée, sans ça, je suis bloqué !

Merci

8 réponses

Messages postés
4
Date d'inscription
lundi 4 janvier 2010
Statut
Membre
Dernière intervention
5 janvier 2010
1
Salut,

Pour ce qui est du code, c'était une combinaison que j'avais essayé "comme ca"... De toute manière ca n'a jamais marché. J'ai installé la version 2.0 d'OpenCV, maintenant ca fonctionne bien.

Merci pour ta réponse en tout cas.
Messages postés
10
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
13 octobre 2010
1
essayé de mettre votre image dans votre projet C++ et chargé le directement ('test.png')
exemple :
//créer une image en couleur
IplImage *img = cvLoadImage("test.jpg")
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Salut
Commence par telecharger la version 2.0 d'OpenCV.
Tu verras ici:
http://opencv.willowgarage.com/documentation/reading_and_writing_images_and_video.html'highlight=cvloadimage#cvLoadImage
que le premier argument de la fonction cvLoadImage et le nom du fichier et le second les couleurs et non l'inverse...

A+


____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
Messages postés
1
Date d'inscription
lundi 17 août 2009
Statut
Membre
Dernière intervention
13 mai 2010

thenemesys il fau just invérsé(Attention:ajouté un '\\' au lieu de'\')
ex :
IplImage *img=cvLoadImage("c:\\t.png"); //
Messages postés
11
Date d'inscription
mardi 30 mars 2010
Statut
Membre
Dernière intervention
2 septembre 2011

bonjour,

j'ai exactement le même problème que thenemesys mais j'ai tout tenté je ne voie pas ou je fait l'erreur?????
et pourtant je suis sur openCv2.1 mais quand je lance le prog j'ai une fenêtre grise...

voici mon prog

// test2.cpp : définit le point d'entrée pour l'application console.
//

#include "stdafx.h"
#include <cxcore.h>
#include <cv.h>
#include <highgui.h>

// Fonction qui crée et renvoit une image avec des formes dedans

IplImage* createGeometry(){
// Création d'une image de taille 640, 480, 8 bits par channel, 3 channels)
IplImage* image = cvCreateImage(cvSize(640,480), 8, 3);
// Remplir l'image avec tous des pixels noirs
cvZero(image);
// Dessin d'un cercle rouge (RGB 255, 0, 0), centré en 320, 240, rayon 10, plein(-1));
cvCircle( image, cvPoint(320,240), 10, CV_RGB(255,0,0), -1);
// Dessin d'un cercle vert (RGB 0, 255, 0), centré en 300, 200, rayon 20, épaisseur 3);
cvCircle( image, cvPoint(300,200), 20, CV_RGB(0,255,0), 3);
// Dessin d'une ligne ...
cvLine( image, cvPoint(0,0), cvPoint(640,480), CV_RGB(255,255,0),2);
// Dessin d'un rectangle...
cvRectangle(image, cvPoint(500,350), cvPoint(600, 450), CV_RGB(0,0,255), -1);
return image;
}

// Fonction qui crée et renvoit une image avec un degradé

IplImage* createColor(){
// Création d'une image de taille 640, 480, 8 bits par channel, 3 channels)
IplImage* image = cvCreateImage(cvSize(640,480), 8, 3);
// Remplir l'image avec tous des pixels noirs
cvZero(image);
float step = 255.0/480.0; // Pas pour le dégradé
float currentColor = 0; // Valeur courante du dégradé
for (int y = 0; y < 480;++y){
for (int x = 0; x < 640; ++x){
((uchar*)(image->imageData + image->widthStep*y))[x*3] = currentColor; // Canal bleu de l'image
((uchar*)(image->imageData + image->widthStep*y))[x*3+1] = currentColor; // Canal vert
((uchar*)(image->imageData + image->widthStep*y))[x*3+2] = currentColor; // Canal rouge

}
currentColor += step;
}

return image;
}



int main(int argv, char** argc){
IplImage *image1 = 0;
IplImage *image2 = 0;
IplImage *image3 = 0; // Chargement d'un fichier

image1 = createGeometry();
image2 = createColor();
image3 = cvLoadImage("./imagetest1.jpeg", 1);
cvNamedWindow("Geometry",1);
cvNamedWindow("Color",1);
cvNamedWindow("File",1);

// Affichage de l'image1 dans la fenêtre Geometry
cvShowImage("Geometry", image1);
// Idem pour image2 et 3
cvShowImage("Color", image2);
cvShowImage("File", image3);

// Attente infinie que l'utilisateur appuie sur une touche
cvWaitKey(0);

// Suppression des images en mémoire (avec vérification que l'image a bien été créée)
if (image1) cvReleaseImage (&image1);
if (image2) cvReleaseImage (&image2);
if (image3) cvReleaseImage (&image3);
}


et c cette ligne la qui ne va pas "" image3 = cvLoadImage("./imagetest1.jpeg", 1); ""
Messages postés
11
Date d'inscription
mardi 30 mars 2010
Statut
Membre
Dernière intervention
2 septembre 2011

Messages postés
11
Date d'inscription
mardi 30 mars 2010
Statut
Membre
Dernière intervention
2 septembre 2011

si qq a une idée ça serais vraiment sympa!!!

merci
Messages postés
4
Date d'inscription
vendredi 17 juillet 2009
Statut
Membre
Dernière intervention
25 mai 2011

il suffit de mettre \\ au lieu de \
par exemple:
IplImage *image = cvLoadImage("C:\\Users\\toshiba\\Pictures\\lena.jpg", CV_LOAD_IMAGE_COLOR);