首页 > 代码库 > opencv2显示一张图像及waitkey()函数解析

opencv2显示一张图像及waitkey()函数解析

准备一张图片  黑子.jpg放在新建项目文件夹里与项目名称相同的文件夹里。


读入一张图片并显示在opencv编程里经常用到

以下程序运行过,没有问题。或许#include <string>可以去掉,没有试。这是很久以前写的。越是基本的越是重要。

#include <opencv2\opencv.hpp>

#include <iostream>
#include <string>
using namespace cv;
using namespace std;
int main()
{
        Mat img = imread("黑子.jpg");//读入图片到Mat型变量img 
        if (img.empty())
        {
                cout << "error";
                return -1;
        }
        imshow("黑子的照片", img);//显示图片
        waitKey();

        return 0;

}

说明:

 cvWaitKey

等待按键事件

int cvWaitKey( int delay=0 );

delay 
    延迟的毫秒数。 

函数cvWaitKey无限制的等待按键事件(delay<=0时);或者延迟"delay"毫秒。返回值为被按键的值,如果超过指定时间则返回-1。

注释:这个函数是HighGUI中唯一能够获取和操作事件的函数,所以在一般的事件处理中,它需要周期地被调用,除非HighGUI被用在某些能够处理事件的环境中。
比如在MFC环境下,这个函数不起作用。

问题描述:

    在showImage后面,如果不加cvWaitKey,那出来的结果就是一片灰色,只有加了以后,才能正常显示摄像头的内容,请问这是为什么?谢谢!

解析:

    如果没有cvWaitKey的话, 那么循环里面的每个指令执行时间为0.0000000001s,
总之趋近于0.那么capture可能有10000帧图像, 那么10000帧图像也之需要0.000001s就播放完了, 结果你还没看到画面,就已经黑屏了 ....

 

 

总结:

    cvWaitKey(time)作用就是程序等待时间,参数time单位为ms,在time时间内等待按键按下。


opencv2显示一张图像及waitkey()函数解析