2016-08-11 16 views
0

私はそのようなコードを実行しています。画像ウィンドウがプログラム実行中にopencvに応答しない

Mat img1 = imread("C:\\input0.png"); 


namedWindow("original"); 
imshow("original", img1); 


int lowThreshold = 20; 
int ratio = 2; 
int kernel_size = 5; 
Mat edge_map; 
Mat gray_image; 
cvtColor(img1, gray_image, CV_BGR2GRAY); 
Canny(gray_image, edge_map, lowThreshold, lowThreshold*ratio, kernel_size); 

namedWindow("Edge Image"); 
imshow("Edge Image", edge_map); 

Mat result_image = produce_the_result_image(img1, edge_map); 

namedWindow("Final Image"); 
imshow("Final Image", result_image); 

int key = 1; 
while (key != 'q') { 
    key = waitKey(5); 
} 

ティルは、最後の画像(最終画像ウィンドウ)を示し、他のウィンドウは、2-3 MINUTOSを持続し、すべての画像のウィンドウを示しており、最後の関数が終了(produce_the_result_image)の後に、しかし、「応答しない」が表示、エラーは消えます。それは普通ですか?

ありがとうございます!

答えて

0

OpenCVの画像は、waitKey();を呼び出すまで表示または応答しません。最初の2回の呼び出しでimshowを呼び出した後にwaitKey(1);と呼ぶと、画像が表示されます(キーを押すと1ミリ秒間待ってから反応しなくなります)。引数のないwaitKey();を呼び出すか、コードの末尾に似たループwhileを使用すると、画像が表示され、応答します。キーを押すと、画像は再び反応しなくなります。

はい、これはOpenCVの通常の動作です。一度にすべてのウィンドウに適用されることに注意してください。waitKeyが現在呼び出されているか、どれも応答していない場合はすべて応答します。

関連する問題