2013-03-22 145 views
0

为了不让显示的图像闪掉,我放了一个getchar()。这是Windows控制台项目。openCV显示图像灰色如果getchar

cv::Mat image= cv::imread("me.jpg"); 
cv::namedWindow("Image1"); 
cv::imshow("Image1",image); 
getchar(); 

的“图像1”窗口是灰色的,似乎是“没有反应” 而如果我改变getchar()cv:waitKey(5000),它可以正常工作。 为什么,它与流程有什么关系? 谢谢。

回答

1

imshow()只是复制的图像参考,waitKey()做(窗口)消息抽水,没有它,你的程序永远不会去点,而实际的blitting发生

+0

,我想有是其他方式来泵图像? – Tiina 2013-03-22 13:51:12

+0

好吧,这不是关于抽像,而是消息。 gui程序(不管你信不信,这是一个!)有一个不同的程序流程,比控制台。 waitKey()中的代码是正常情况下在主循环中会发生的情况,所以如果不调用它,代码绘制图像将永远不会执行。另外,如果你调用getchar(),它会阻塞整个程序(同时,它会等待konsole窗口中的密钥,而不是gui) – berak 2013-03-22 14:01:37