精华内容
下载资源
问答
  • 另外,一般在imshow()后要使用waitKey(),给图像绘制留下时间,不然窗口会出现无响应情况,并且图像无法显示出来。 int waitKey(int delay=0) - 延时delay = 0 函数则延时无限长,必须有键按下才继续执行。 - 延时...
  • 对‘cv::waitKey(int)’未定义的引用 我一直以为是C++11或者g++版本的原因,看到: http://forum.ubuntu.com.cn/viewtopic.php?f=48&t=377522 提出: g++ `pkg-config –cflags –libs opencv` lena.cpp -o lena ...
  • 但图像是如何显示的,cvShowWindow和cvWaitKey有什么关系,如果wait是等待图像显示,不使用cvWaitKey,使用Sleep行不行。本代码以播放视频的代码为基础,详解了图像的显示过程,对比了多种“可替换”的显示方式,...
  • waitKey

    2017-03-28 16:19:52
    waitKey()仅对窗口机制起作用,例如如果执行了namedWindow函数,再执行waitKey就会起作用。 在imshow之后如果没有waitKey则不会正常显示图片 waitKey(N)表示等待N毫秒的时间,然后按任意键继续 waitKey(0)表示一直...

    waitKey()仅对窗口机制起作用,例如如果执行了namedWindow函数,再执行waitKey就会起作用。

    在imshow之后如果没有waitKey则不会正常显示图片

    waitKey(N)表示等待N毫秒的时间,然后按任意键继续(一般取waitKey(10),因为程序本身运行需要时间)

    waitKey(0)表示一直等待

    展开全文
  • 理解cv2.waitKey

    2021-01-05 19:42:32
    最初用opencv处理图像时,大概查过cv2.waitKey这个函数,当时查的迷迷糊糊的,只知道加上cv2.waitKey之后cv2.imshow就可以显示图像了。今天做视频逐帧截取时再次碰见了它,我盯着它想了半天也不知道这个函数有什么用...

    最初用opencv处理图像时,大概查过cv2.waitKey这个函数,当时查的迷迷糊糊的,只知道加上cv2.waitKey之后cv2.imshow就可以显示图像了。今天做视频逐帧截取时再次碰见了它,我盯着它想了半天也不知道这个函数有什么用,于是打开浏览器,一逛就是大半天。现在把我的收获及想法总结一下。

    为什么cv2.imshow之后要跟cv2.waitkey

    我们先说说它的好兄弟cv2.imshow。我们都知道imshow的作用是在GUI里显示一幅图像,但是它有个特点我们没有太注意,就是它的持续时间。看看下面的测试你就明白了。

    无waitkey

    waitkey1

    waitkey1000

    实际上,waitkey控制着imshow的持续时间,当imshow之后不跟waitkey时,相当于没有给imshow提供时间展示图像,所以只有一个空窗口一闪而过。添加了waitkey后,哪怕仅仅是cv2.waitkey(1),我们也能截取到一帧的图像。所以cv2.imshow后边是必须要跟cv2.waitkey的。

    给一段imshow源码里的注释来印证下:This function should be followed by cv::waitKey function which displays the image for specified . milliseconds. Otherwise, it won't display the image.

    非官方翻译:这个函数之后应接cv2.waitKey函数来显示指定图像。否则,它不会显示图像。

    为什么要这么麻烦的设计

    来自官方的解释:This function is the only method in HighGUI that can fetch and handle events, so it needs to be .

    非官方翻译:这个函数是HighGUI窗口中唯一的获取和处理事件的方法,因此它必须存在。

    cv2.waitKey(1000) & 0xFF == ord(‘q’) 是什么意思

    先解释下字面意思:

    • cv2.waitKey(1000):在1000ms内根据键盘输入返回一个值
    • 0xFF :一个十六进制数
    • ord('q') :返回q的ascii码

    0xFF是一个十六进制数,转换为二进制是11111111。waitKey返回值的范围为(0-255),刚好也是8个二进制位。那么我们将 cv2.waitKey(1) & 0xFF计算一下(不知怎么计算的可以百度位与运算)发现结果仍然是waitKey的返回值,那为何要多次一举呢?直接 cv2.waitKey(1) == ord('q')不就好了吗。

    实际上在linux上使用waitkey有时会出现waitkey返回值超过了(0-255)的范围的现象。通过cv2.waitKey(1) & 0xFF运算,当waitkey返回值正常时 cv2.waitKey(1) = cv2.waitKey(1000) & 0xFF,当返回值不正常时,cv2.waitKey(1000) & 0xFF的范围仍不超过(0-255),就避免了一些奇奇怪怪的BUG。

    cv2.waitkey和time.sleep的区别

    肯定有人写在代码时把waitkey当sleep用过,你会发现有时waitkey并不起作用。

    先来一段官方解释:The function only works if there is at least one HighGUI window created and the window is active

    非官方翻译:这个函数只有在至少一个HighGUI窗口存在的情况下才会起作用。

    也就是说waitkey的延时机制是有条件的,必须在它之前创造HighGUI窗口它才会起作用。而time.sleep是无条件的延时机制。

    那么cv2.waitKey能不能代替time.sleepcv2.imshow心中的地位呢?

    waitkey
    sleep
    答案很清楚:不能。

    个人博客:LeeeSe

    展开全文
  • cv2.waitKey的入门级理解

    万次阅读 多人点赞 2020-05-22 02:19:19
    为什么cv2.imshow之后要跟cv2.waitkey 为什么要这么麻烦的设计 cv2.waitKey(1000) & 0xFF == ord('q') 是什么意思 cv2.waitkey和time.sleep的区别

    最初用opencv处理图像时,大概查过cv2.waitKey这个函数,当时查的迷迷糊糊的,只知道加上cv2.waitKey之后cv2.imshow就可以显示图像了。今天做视频逐帧截取时再次碰见了它,我盯着它想了半天也不知道这个函数有什么用,于是打开浏览器,一逛就是大半天。现在把我的收获及想法总结一下。

    为什么cv2.imshow之后要跟cv2.waitkey

    我们先说说它的好兄弟cv2.imshow。我们都知道imshow的作用是在GUI里显示一幅图像,但是它有个特点我们没有太注意,就是它的持续时间。看看下面的测试你就明白了。

    无waitkey

    waitkey1

    waitkey1000

    实际上,waitkey控制着imshow的持续时间,当imshow之后不跟waitkey时,相当于没有给imshow提供时间展示图像,所以只有一个空窗口一闪而过。添加了waitkey后,哪怕仅仅是cv2.waitkey(1),我们也能截取到一帧的图像。所以cv2.imshow后边是必须要跟cv2.waitkey的。

    给一段imshow源码里的注释来印证下:This function should be followed by cv::waitKey function which displays the image for specified . milliseconds. Otherwise, it won't display the image.

    非官方翻译:这个函数之后应接cv2.waitKey函数来显示指定图像。否则,它不会显示图像。

    为什么要这么麻烦的设计

    来自官方的解释:This function is the only method in HighGUI that can fetch and handle events, so it needs to be .

    非官方翻译:这个函数是HighGUI窗口中唯一的获取和处理事件的方法,因此它必须存在。

    cv2.waitKey(1000) & 0xFF == ord(‘q’) 是什么意思

    先解释下字面意思:

    • cv2.waitKey(1000):在1000ms内根据键盘输入返回一个值
    • 0xFF :一个十六进制数
    • ord('q') :返回q的ascii码

    0xFF是一个十六进制数,转换为二进制是11111111。waitKey返回值的范围为(0-255),刚好也是8个二进制位。那么我们将 cv2.waitKey(1) & 0xFF计算一下(不知怎么计算的可以百度位与运算)发现结果仍然是waitKey的返回值,那为何要多次一举呢?直接 cv2.waitKey(1) == ord('q')不就好了吗。

    实际上在linux上使用waitkey有时会出现waitkey返回值超过了(0-255)的范围的现象。通过cv2.waitKey(1) & 0xFF运算,当waitkey返回值正常时 cv2.waitKey(1) = cv2.waitKey(1000) & 0xFF,当返回值不正常时,cv2.waitKey(1000) & 0xFF的范围仍不超过(0-255),就避免了一些奇奇怪怪的BUG。

    cv2.waitkey和time.sleep的区别

    肯定有人写在代码时把waitkey当sleep用过,你会发现有时waitkey并不起作用。

    先来一段官方解释:The function only works if there is at least one HighGUI window created and the window is active

    非官方翻译:这个函数只有在至少一个HighGUI窗口存在的情况下才会起作用。

    也就是说waitkey的延时机制是有条件的,必须在它之前创造HighGUI窗口它才会起作用。而time.sleep是无条件的延时机制。

    那么cv2.waitKey能不能代替time.sleepcv2.imshow心中的地位呢?

    waitkey
    sleep
    答案很清楚:不能。

    展开全文
  • cv2.waitKey()

    2021-09-09 19:37:28
    waitKey()的基本逻辑,他会在一定时间内等待接收键盘上的一个值(都是在展示imshow后面使用) # 1.若参数delay≤0:表示一直等待按键; # 2、若delay取正整数:表示等待按键的时间,比如cv2.waitKey(30),就是等待30...

     waitKey()的基本逻辑,他会在一定时间内等待接收键盘上的一个值(都是在展示imshow后面使用)
    # 1.若参数delay≤0:表示一直等待按键;
    # 2、若delay取正整数:表示等待按键的时间,比如cv2.waitKey(30),就是等待30(milliseconds);(视频中一帧数据显示(停留)的时间)
    # cv2.waitKey(delay)返回值:
    # 1、等待期间有按键:返回按键的ASCII码(比如:Esc的ASCII码为27,即0001  1011);(接收值为非空,if代码块执行)
    # 2、等待期间没有按键:返回 -1;(非0非空,if代码块执行)
    #  应用,因为图片就一帧,所以参数小于等于0就行了,展示完就任意键退出,也不用什么判断条件.但是视频的话要循环展示全部帧,也要能让他退出,所以首先不能小于等于0,这样它就不动了,并且给一个值就直接执行if代码块,所以应该设置等待时间,一般都是10-50,这样视频不快不慢.然后也设置一个退出.(捕获键的ASCII码等于设定值退出)
    #  我们知道,当按下按键时,waitkey函数的输入值一定是一个正整数。任何一个正整数,与1111 1111做&运算,其结果必然是他本身(因为正数的补码等于原码)系统中按键对应的ASCII码值并不一定仅仅只有8位,同一按键对应的ASCII并不一定相同(但是后8位一定相同)为什么会有这个差别?是系统为了区别不同情况下的同一按键。比如说“q”这个按键当小键盘数字键“NumLock”激活时,“q”对应的ASCII值为100000000000001100011 。而其他情况下,对应的ASCII值为01100011。所以加上& 0xFF主要是为了防止报错
    (还有一个退出点,是视频执行完,读取空帧退出,这个退出点在上面那个if代码块)

     

    展开全文
  • OpenCV Waitkey()使用

    千次阅读 2020-12-21 17:30:13
    OpenCV Waitkey()使用 int waitKey(int delay=0) waitKey()函数的功能是不断刷新图像,频率为delay,单位是ms,返回值为当前键盘按下的值,没有按键时返回-1. 显示图片和视频时,会在imshow()时,通常会在后面...
  • cv2.waitKey(0) cv2.destroyAllWindows() ``` ![打算点击图片中的×关闭窗口,但是这样子关闭窗口,程序会一直在代码语句中执行](https://img-ask.csdn.net/upload/202002/03/1580714664_678667.png) 打算点击...
  • 将链接器–输入–附加依赖项里面opencv_world451.lib去掉只留opencv_world451d.lib opencv_world451.lib和opencv_world451d.lib区别 带d的opencv_world451d.lib文件对应debug模式 不带d的opencv_world451.lib文件...
  • waitKey()函数的一些用法

    千次阅读 2020-08-09 14:40:02
    waitKey()–在一个给定的时间内(单位ms)等待用户按键触发;如果用户没有按下键,则接续等待(循环)。有按键按下,返回按键的ASCII值。无按键按下,返回-1。 延时delay = 0 函数则延时无限长,必须有键按下才继续执行。...
  • 为了方便调试,比如全速运行(Ctrl+F5)时,不让代码自动关闭运行页面,可以加入以下几句代码: int main() { char b; cin >> b; cout << b; return 0; }
  • waitKey函数属于opencv函数里既常用又非常基础的函数,无论是刚开始学习opencv,还是使用opencv进行开发调试,都可以看到waitKey函数的身影。然而最基础的东西可能往往容易忽略掉,在此可以好好了解一遍这个基础又...
  • 0.本文为测试cv::waitKey()的触发条件 1.程序准备 mkdir -p opencv_test/src cv opencv_test/src catkin_create_pkg commandlineparse std_msgs rospy roscpp cv_bridge # meng @ meng in ~/my_learning/opencv_test...
  • waitkey 函数的浅谈

    2020-05-12 17:35:23
    waitKey()是开源视觉库OpenCV中的库函数。其实这个函数是基于C++编写的,可以用在python和c。大致的作用都是延迟一段时间使得图片显示 应用的方法大致如下 openv中对cvWaitkey函数的定义如下: int cvWaitKey( int ...
  • waitKey函数详细使用

    千次阅读 2019-11-02 11:54:27
    C++:int waitKey(int delay = 0) waitKey函数的功能是不断刷新图像,频率时间为delay,单位为ms 返回值为当前键盘按键值。 所以调用imshow()函数显示图像的时候,需要在后面加上while(waitKey(n)==key){}, n为大于...
  • opencv waitKey的坑

    2020-05-04 23:21:32
    一直在使用waitKey,但是最近遇到一个问题,当实现如下的代码时,可以正常运行if后的语句,并成功输出img saved ... cv::imshow("out_img",img); char c=cv::waitKey(0); //if (cv::waitKey(0) == 27) { if (c...
  • waitKey()用法

    千次阅读 2020-02-13 10:00:47
    waitKey()是OpenCV中的内置函数,语句waitKey(0);表示“暂停程序,等待一个按键输入”!也就是说,当程序执行到waitKey(0);时,程序被暂停运行,只有当你输入一个按键时,它才会继续运行。 ...
  • 关于cv.waitKey

    2019-06-23 13:57:29
    cv.waitKey() 相当于cv.waitKey(0),即当前窗口持续显示,直至按下键盘或者点击窗口关闭。 可将其赋予一个对象,如key = cv.waitKey(),若通过键盘关闭,则返回键盘的ASCII值(Esc对应的ASCII值为27);若通过鼠标...
  • waitKey()的使用

    2019-12-10 19:49:20
    简介:opencv中的等待函数,用于显示窗口的等待时间。 类型: 1、waitKey()和waitKey...Q:程序中调用等待函数waitKey()不起作用,无论是waitKey()、waitKey(0)还是waitKey(100),或者是使用if(waitKey...
  • 在之前使用VS-Qt编写代码时,将包含OpenCV waitKey() 的一个算法类放在了一个子线程里面(之前算法类调试时使用,没有删除),子线程通过接收Qt信号来执行算法。 然后发现了一个奇异的现象,即算法没有根据信号的输入...
  • cv2.waitKey

    2019-10-24 14:08:45
    #!/usr/bin/env python # -*- coding: UTF-8 -*- ''' @author: carry @file: temp.py ... if cv2.waitKey(1) & 0xFF == ord('q'): print("I'm done") break if __name__ == '__main__': test()
  • 对'cvWaitKey'未定义的引用 对'cvNamedWindow'未定义的引用 对'cvShowImage'未定义的引用 2. 将环境配置改回去 问了实验室师兄,说我是不是把环境变量给改了,我于是把修改的地方改回去. 2.1 改/etc/ld.so.conf.d/...
  • OpenCV中的waitKey()函数 代码提示中的信息 waitKey(0); //The function only works if there is at least one HighGUI window created and the window is active. //If there are several HighGUI windows, any of ...
  • OpenCV:延迟函数waitKey()

    千次阅读 2019-06-10 10:58:35
    函数原型: int waitKey(int delay = 0);...如果delay大于0,例如,waitKey(25)将每隔至少25ms显示视频的一帧图像(适用于显示视频帧),如果要按键退出,则需要将waitKey(25)与一个按键值(ASCII码)比较。 #...
  • waitkey()

    2018-11-24 11:32:00
    #include <opencv2/opencv.hpp> using namespace cv; void main(void) { Mat srcImage = imread("树洞.jpeg"); imshow("原始图", srcImage);... waitKey(0);...waitKey(decay)有两个作用: 1....
  • python cv2.waitKey()函数

    万次阅读 多人点赞 2019-09-25 22:50:10
    运行环境 : python 3.6.0 opencv :opencv-python 4.1.1.26 cv2.waitKey() 接口 : def waitKey(delay=None) ...waitKey() 函数的功能是不断刷新图像 , 频率时间为delay , 单位...1. waitKey()–是在一个给定的时间...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 118,064
精华内容 47,225
关键字:

waitkey