OpenCV가 CVloadImage ( "String.ext")를 거부하지만 cvloadimage (Argv [1])를 수락하는 이유는 무엇입니까?
-
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
그것이 무엇인지 볼 수 있습니다. 그것은 아마도 당신을 범인을 가리킬 것입니다.
제휴하지 않습니다 StackOverflow