2010-02-20 6 views
1

Je veux savoir exaclty ce que ce programme fait:Que fait exactement ce programme OpenCV?

#include <iostream> 
#include <cv.h> 
#include <cxcore.h> 
#include <highgui.h> 
using namespace std; 
int main(int argc, char* argv[]) 
{ 
printf("Hello world\n"); 
IplImage *img = cvLoadImage("C:/Program Files/OpenCV/samples/c/lena.jpg"); 
// Create a window 
cvNamedWindow("result", 
CV_WINDOW_AUTOSIZE // allow window to resize to fit image true size 
); 
cvShowImage("result", img); // Show image in window already created 
// Wait for a keystroke. If a positive argument is given, it will wait for 
// that number of milliseconds and then continue. If 0 is given, the 
// program will wait indefinitely for a keypress. 
cvWaitKey(0); 
// Clean up (not really necessary, but good programming practice) 
cvReleaseImage(&img); 
cvDestroyWindow("result"); 
system("PAUSE"); 
return EXIT_SUCCESS; 
} 

La raison pour laquelle je vous pose la question parce que je pense qu'une image est censée apparaître quand je lance le programme, mais plutôt pour moi, une boîte grise saute vers le haut.

Quelqu'un peut-il faire la lumière sur ce problème? Merci d'avance.

+0

Vous devez lier votre code avec le fichier OpenCV 'lib' approprié. Assurez-vous également que l'image existe sur le chemin que vous avez entré dans votre code. – dirkgently

+0

@dirkgently Le fichier existe sur le chemin. Si cela fonctionne en mode débogage, ne devrait-il pas fonctionner en mode release? – Omar

+0

Il doit s'agir d'un problème de configuration entre les deux modes. Je suppose que vous avez ajouté la lib dans votre configuration de débogage mais pas dans la version de débogage. – dirkgently

Répondre

1

Il charge une image

Affiche l'image

puis attendez anykey (0)

Sur anykey presse

libère la mémoire utilisée et le retour

EXIT_SUCCESS

Il devrait fonctionne correctement, probablement que le chemin n'est pas correct

essayer de copier votre image dans votre dossier de travail et d'exécuter à partir de là tout en enlevant le chemin complet dans votre image adresse

« lena.jpg »

également une autre option serait d'essayer des barres obliques inversées

"C: \\ Program Files \\ OpenCV \\ \\ c \\ échantillons lena.jpg"

EDIT *

Vous devez exécuter les tests de diagnostic inclus avec OpenCV

ils sont situés dans le répertoire bin OpenCV de \ et devrait être en mesure de vérifier si votre installation est correcte ou non

+0

J'ai essayé les deux choses que vous avez dites mais aucune d'elles ne fonctionne. Je reçois toujours une boîte grise lorsque je cours le programme. – Omar

0
#include <stdio.h> 
#include <cv.h> 
#include <cxcore.h> 
#include <highgui.h> 

int main(int argc, char* argv[]) 
{ 
printf("Hello world\n"); 
IplImage *img = cvLoadImage("fruits.jpg",1); 
// Create a window 
cvNamedWindow("result", 
CV_WINDOW_AUTOSIZE // allow window to resize to fit image true size 
); 
cvShowImage("result", img); // Show image in window already created 
// Wait for a keystroke. If a positive argument is given, it will wait for 
// that number of milliseconds and then continue. If 0 is given, the 
// program will wait indefinitely for a keypress. 
cvWaitKey(0); 
// Clean up (not really necessary, but good programming practice) 
cvReleaseImage(&img); 
cvDestroyWindow("result"); 
system("PAUSE"); 
return EXIT_SUCCESS; 
} 

Makefile (Assurez-vous u avez onglet au lieu de 8 places!)

CFLAGS=-g -Wall 
test = test 
$(test): $(test).c 
    gcc -ggdb `pkg-config opencv --cflags --libs` -g -c -Wall $(test).c -o $(test).o 
    gcc -ggdb `pkg-config opencv --cflags --libs` -lpthread -lm $(test).o -o $(test) 

clean: 
    @echo Removing generated files... 
    rm -f $(test).o $(test) 

Ce programme fonctionne pour moi! Cordialement, Virgoptrex! Testé sur OpenCv 1.0 sur Ubuntu 8.10!