Por que OpenCV rejeitar cvLoadImage ( “string.ext”), mas aceitar cvLoadImage (argv [1])?
-
22-07-2019 - |
Pergunta
#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;
}
Se eu substituir a linha indicada com cvLoadImage("247.png")
eu recebo uma janela em branco e restos de imagem igual a zero
Se eu executar o exe e dar-lhe 247.png como um argumento, é apenas dandy. Se eu colocar o "247.png" direito para o código e construir e executá-lo Visual Studio 2008, ele falhar. Se eu construir e executar a partir do prompt de comando, ele funciona.
Por que isso? Estou um pouco cansado de se mover para a frente, sem ter esse baixo.
Solução
Sob Projeto-> Propriedades-> Configuração Properties-> Depuração há um campo "diretório de trabalho". Definir isso para o diretório que você quer executar e que deve resolver o problema.
Outras dicas
Você tem certeza "247.png" está no diretório de trabalho atual quando você tem o nome codificado?
Execute o programa em algo como Process Monitor para ver o que arquivo está realmente sendo aberto (ou o arquivo de erros de e / S pode haver).
Depois de sua edição para adicionar mais informações para a questão (o problema ocorre quando executado a partir de VS2008), este é quase certamente o seu problema. O diretório atual que VS inicia o programa sob Não é o diretório que tem o "247.png" arquivo.
Você pode verificar para ver o que seu cwd
é?
Você pode #include <direct.h>
e usar a função _getcwd
para ver o que é. Isso provavelmente irá apontar-lhe o culpado.