OpenCV显示视频帧时出现一个问题,就是imshow之后若是不加waitkey则无法显示,找了很久也没找到原因。
只是发现也有人发现这个问题:
cvWaitKey(x) / cv::waitKey(x)
does two things:
- It waits for x milliseconds for a key press. If a key was pressed during that time, it returns the key's ASCII code. Otherwise, it returns
-1
. - It handles any windowing events, such as creating windows with
cv::namedWindow()
, or showing images withcv::imshow()
.
A common mistake for opencv newcomers is to call cv::imshow()
in a loop through video frames, without following up each draw with cv::waitKey(30)
. In this case, nothing appears on screen, because highgui is never given time to process the draw requests from cv::imshow()
.
所以imshow之后还是加上waitkey语句吧,为节约时间就设置为最小值1好了。
cv::waitkey(1);