OpenCV中waitKey( )内不同参数耗时计算和返回值

    科技2022-07-17  116

    平台:

    C++:

    int cv::waitKey (int delay = 0)

    Python:

    retval = cv.waitKey( [,delay])

    官方解释:

    当delay≤0时,函数waitKey无限等待键事件(即按下按键),或者等待正数时长的延迟(单位:毫秒)。

    注意:

    由于操作系统在切换线程之间的间隔时间最短,因此该功能将不会等待确切的延迟毫秒,而是将至少等待延迟毫秒,具体取决于当时计算机上正在运行的其他东西。它返回所按下键的代码,如 Esc = 27 。如果在经过指定时间之前未按下任何键,则返回 -1 。需要注意不同 delay 值的不同耗时。

    测试代码

    #include<stdio.h> #include<opencv2/opencv.hpp> #include <time.h> using namespace cv; using namespace std; int main() { Mat src = imread("1.jpg"); double start, end; imshow("car", src); start = clock(); int delay = waitKey(1000); // 1s(1000ms)内无操作则返回 -1 耗时1001ms end = clock(); cout << "TotalTime = " << (double)((end - start) * 1000 / CLOCKS_PER_SEC) << "ms" << endl; printf("waitKey = %d", delay); return 0; }

    其它参数

    都需要按键操作 int delay = waitKey(-1); //返回对应键值的ASCII值 - TotalTime = 1829ms int delay = waitKey(0); //返回对应键值的ASCII值 - TotalTime = 3263ms

    结论

    如果 delay > 0 ,在规定的 delay时间 内没有按键操作,则返回 -1 ,否则返回对应的 ASCII值 。 如果 delay = 0 或 delay < 0 ,返回对应的 ASCII值 。

    Processed: 0.012, SQL: 8