Pourquoi OpenCV refuse-t-il cvLoadImage (& string.ext & text # 8221;), mais accepte-t-il cvLoadImage (argv [1])?
-
22-07-2019 - |
Question
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
int main(int argc, char* argv[]){
cvNamedWindow("Window1", CV_WINDOW_AUTOSIZE);
IplImage* image = 0;
->->image = cvLoadImage(argv[1]);<-<-
if(!image) printf("Unable to load image!");
cvShowImage("Window1", image);
char c = cvWaitKey(0);
cvReleaseImage(&image);
cvDestroyWindow("Window1");
return 0;
}
Si je remplace la ligne indiquée par cvLoadImage ("247.png")
, la fenêtre est vide et l'image reste égale à zéro
Si je lance le fichier exe et lui donne 247.png en argument, c’est dandy. Si je mets le " 247.png " droit dans le code et le construire et l'exécuter Visual Studio 2008, il échoue. Si je construis et que je cours à partir de l'invite de commande, cela fonctionne.
Pourquoi est-ce? Je suis un peu fatigué d'avancer sans abaisser ceci.
La solution
Sous Projet - > Propriétés- > Propriétés de configuration- > Débogage, il existe un champ "Répertoire de travail". Définissez-le dans le répertoire dans lequel vous voulez exécuter et cela devrait résoudre le problème.
Autres conseils
Êtes-vous certain " 247.png " est dans le répertoire de travail en cours lorsque vous avez le nom hardcoded?
Exécutez le programme sous quelque chose comme Moniteur de processus pour voir ce que le fichier est réellement ouvert (ou quelles erreurs d'E / S de fichier il pourrait y avoir).
Après votre modification pour ajouter plus d'informations à la question (le problème se produit lors de l'exécution à partir de VS2008), c'est certainement votre problème. Le répertoire actuel dans lequel VS lance le programme n’est pas le répertoire qui contient le code "247.png". fichier.
Pouvez-vous vérifier quel est votre cwd
?
Vous pouvez #include < direct.h >
et utiliser la fonction _getcwd
pour voir ce que c'est. Cela vous dirigera probablement vers le coupable.