OpenCV가 CVloadImage ( "String.ext")를 거부하지만 cvloadimage (Argv [1])를 수락하는 이유는 무엇입니까?

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

  •  22-07-2019
  •  | 
  •  

문제

#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;
}

표시된 선을 교체하면 cvLoadImage("247.png") 빈 창문을 얻고 이미지는 0과 동일합니다.

내가 exe를 실행하고 247.png를 논쟁으로 주면 단지 dandy 일뿐입니다. "247.png"를 코드에 바로 넣고 Visual Studio 2008을 빌드하고 실행하면 실패합니다. 명령 프롬프트에서 빌드하고 실행하면 작동합니다.

왜 이런거야? 나는 이것을 내려 놓지 않고 앞으로 나아가는 것이 조금 지친다.

도움이 되었습니까?

해결책

프로젝트-> 속성-> 구성 속성-> 디버깅 필드 "작업 디렉토리"가 있습니다. 실행하려는 디렉토리로 설정하면 문제를 해결해야합니다.

다른 팁

"247.png"가 하드 코드 이름이있을 때 "247.png"가 현재 작업 디렉토리에 있다고 확신하십니까?

같은 곳에서 프로그램을 실행하십시오 프로세스 모니터 실제로 열리는 파일을 확인하려면 (또는 어떤 파일 I/O 오류가 있을지).

편집 한 후 질문에 더 많은 정보를 추가하기 위해 (vs2008에서 실행될 때 문제가 발생 함) 이것은 거의 확실히 문제입니다. VS가 프로그램을 시작하는 현재 디렉토리는 "247.png"파일이있는 디렉토리가 아닙니다.

당신이 무엇을 볼 수 있는지 확인할 수 있습니까? cwd 이다?

당신은 할 수 있습니다 #include <direct.h> 그리고 사용하십시오 _getcwd 그것이 무엇인지 볼 수 있습니다. 그것은 아마도 당신을 범인을 가리킬 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top