2014-11-22 4 views
0

OpenCV로 C++ 프로그램을 만들고 싶습니다.이 프로그램을 사용하면 사용자가 이미지를 어떻게 처리해야하는지 반복적으로 확인할 수 있습니다. 예를 들어 사용자는 특정 번호를 입력하여 명령을 실행할 수 있습니다. 내가 예를 들어이 코드는 다음과 같습니다OpenCV imshow() 이미지를 표시하는 루프에

int main() 
{ 
    int choose = -1; 


    for (;;) 
    { 

    cin >> choose; 

    if (choose == 0) 
    { 

     Mat img = imread(fileName1);//, CV_LOAD_IMAGE_GRAYSCALE); 

     if (!img.data) 
     { 
      cout << "Unable to load file." << endl; 
     } 
     else 
     { 
      namedWindow(fileName1, 1); 
      imshow(fileName1, img); 
     } 
    } 
    else if (choose == 1) 
    { 
     Mat img = imread(fileName2, CV_LOAD_IMAGE_GRAYSCALE); 

     if (!img.data) 
     { 
      cout << "Unable to load file." << endl; 
     } 
     else 
     { 
      namedWindow(fileName2, 1); 
      imshow(fileName2, img); 
     } 
    } 
} 


waitKey(0); 

return 0; 

} 

이미지를로드하도록되어 창은 단지 회색으로 가득합니다. 이미지가 루프에 없을 때 이미지를로드하는 데 문제가 없습니다. 아무도 왜 이것이 문제를 일으키는 지 알아낼 수 있습니까?

편집 : 물론, 내가 그랬을지라도 루프의 시작 부분으로 돌아가서 숫자를 입력 할 때 어떤 이유로 열려있는 창이 열렸을지라도 waitKey (0)를 잊어 버렸습니다.

+0

waitKey()가 필요합니다. imshow() (전형적인 noob 함정) – berak

+0

후 나는 waitkey가 for 루프에 없다고 생각하고 0과 같은 다른 값을 가져야한다고 생각한다. – Engine

+1

waitkey()는'imshow()'. –

답변

2

cin 대신에 눌린 키를 얻으려면 waitKey을 사용하십시오. 또는 댓글에 언급 된대로 waitKey(1) 다음에 imshow 후에 말하십시오.

관련 문제