Por que OpenCV rejeitar cvLoadImage ( “string.ext”), mas aceitar cvLoadImage (argv [1])?

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

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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top