Pourquoi OpenCV refuse-t-il cvLoadImage (& string.ext & text # 8221;), mais accepte-t-il cvLoadImage (argv [1])?

StackOverflow https://stackoverflow.com/questions/445295

  •  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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top