2013-04-13 4 views
2

imshow 함수를 사용하여 간단한 프로그램을 작성했습니다. 몇 번이나 잘 작동했습니다. 처리 전후에 두 장의 사진을 보려고했습니다. 처음에는 제대로 작동했지만 두 번째로 응용 프로그램이 손상되었습니다.opencv의 Imshow가 더 이상 작동하지 않습니다.

이제 언제든지 imshow 응용 프로그램을 중지하십시오.

어떻게 해결할 수 있습니까?

#include <iostream> 
#include <iostream> 
#include <opencv2/imgproc/imgproc.hpp> 
#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 

using namespace std; 
using namespace cv; 

int main() 
{ 
    Mat image, gray_image; 
    string file_path; 

    cout << "Input file path: "; 
    cin >> file_path; 

    image = imread(file_path, CV_LOAD_IMAGE_UNCHANGED); 
    if (image.data==NULL) 
     { 
      cout << "No image found!"; 
      return 1; 
     } 

    cvtColor(image, gray_image, CV_BGR2GRAY); 

    namedWindow("Orig", CV_WINDOW_AUTOSIZE); 
    namedWindow("Gray", CV_WINDOW_AUTOSIZE); 

    imshow("Orig", image); 
    imshow("Gray", gray_image); 

    cout << "Output file path: "; 
    cin >> file_path; 

    imwrite(file_path, gray_image); 

    return 0; 
} 
+0

참조해야합니다. –

+2

스택 추적도 유용합니다. –

+0

나는 아무것도 바꾸지 않았고 같은 프로그램을 두 번이나 실행했다. – Mitu

답변

9

당신은

waitKey 당신은 아마 우리에게 약간의 코드와 정확히 당신이 변화를 보여 주어야한다 what does waitKey (30) mean in OpenCV?

+0

알아요.하지만 waitKey가 있거나없는 imshow 창이 정확한 크기로 표시되지만 회색으로 채워집니다. 콘솔에서 출력 파일 경로를 입력 할 수 있으며 프로그램은 0을 반환하지만 imshow 창과 상호 작용하면 충돌합니다. – Mitu

+0

@mitu 회색으로 채워진 imshow()는 데이터로 업데이트되지 않았 음을 의미합니다. waitkey() 호출 전까지는 이미지가 그려지지 않습니다. –

관련 문제