cv2.waitkey()实现正常退出

cv2.waitkey(delaytime)------->returnvalue
在delaytime时间内,按键盘, 返回所按键的ASCII值;若未在delaytime时间内按任何键, 返回-1; 其中,dalaytime: 单位ms;
note: 1. 当delaytime为0时,表示forever,永不退回.
2. 当按ecs键时,因为esc键ASCII值为27,所有returnvalue的值为27, 一般用这个机制实现在delaytime内正常退出.
3. 也使用 if cv2.waitKey(1) & 0xFF == ord(‘q’): break
4. 来实现1ms之内的正常退出.
5. 其中, ord(‘q’):返回q对应的Unicode码对应的值,q对应的Unicode数值为113。
6. 0xFF:0xFF是一个位掩码,十六进制常数,二进制值为11111111, 它将左边的24位设置为0,把返回值限制在在0和255之间。ord(’ ')返回按键对应的整数(ASCII码)

  • 19
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: cv2.waitkey()是一个等待键盘输入的函数,当用户按下任意键时,函数会返回该键的ASCII码值。如果想要退出程序,可以在等待键盘输入的循环中加入一个判断语句,当用户按下某个特定的键时,退出循环,从而退出程序。例如,可以在等待键盘输入的循环中加入以下代码: key = cv2.waitkey() if key == ord('q'): # 如果用户按下q键 break # 退出循环,从而退出程序 ### 回答2: 在OpenCV中,cv2.waitkey(0)通常用于等待键盘键入。在许多情况下,当运行OpenCV代码时,我们需要能够退出程序,而不需要等待键盘输入。 要在cv2.waitkey(0)时退出OpenCV程序,可以按照以下步骤进行操作: 1.定义一个变量,例如“key”,并将其设置为-1(这是一种安全的做法,因为没有键码与-1相关联)。 2.放置一个while循环,直到获得任何按键输入: while key == -1: key = cv2.waitKey(0) 3.将if语句使用ESC键的键码设置为break: if key == 27: # 如果按下ESC键 break 完整的代码如下所示: import cv2 # 读取图像 img = cv2.imread("test.jpg") # 显示图像 cv2.imshow("Image", img) # 定义变量 key = -1 # 循环等待按键 while key == -1: key = cv2.waitKey(0) # 按下ESC键退出循环 if key == 27: break # 销毁窗口 cv2.destroyAllWindows() 通过这种方式,我们可以在不等待键盘输入的情况下退出OpenCV程序。 ### 回答3: cv2.waitkey(0)是OpenCV中用于等待用户按键的函数,它会阻塞当前进程,直到用户按下任意键,返回值为用户按键的ASCII码。在使用该函数时,一般会将它用在一个while循环中,实时响应用户的按键操作。但是如何退出这个循环呢? 1.使用break语句 在while循环中,当用户按下某个指定的按键后,使用break语句跳出循环即可退出cv2.waitkey(0)的等待状态。 例如,按下q键退出: while True: key = cv2.waitKey(0) if key == ord('q'): # 当按下q键时,退出循环 break 2.使用cv2.destroyAllWindows()函数 在程序中,可能还有其他窗口需要销毁,可以使用cv2.destroyAllWindows()函数来销毁所有的窗口。 例如,按下q键退出并销毁所有窗口: while True: key = cv2.waitKey(0) if key == ord('q'): cv2.destroyAllWindows() # 先销毁窗口 break 3.使用cv2.waitKey()函数 cv2.waitKey()函数在等待用户按键时,还可以传入一个毫秒数作为参数,表示等待用户按键的时间。当时间到达后,会返回-1,可以通过判断返回值是否为-1来退出循环,达到关闭窗口的目的。 例如,等待5秒并退出: start_time = cv2.getTickCount() while True: if cv2.waitKey(1) == -1: # 每1毫秒等待一次 if ((cv2.getTickCount() - start_time)/cv2.getTickFrequency()) > 5: # 停止等待5秒后退出 break 综上所述,可以使用break语句或cv2.destroyAllWindows()函数来退出cv2.waitkey(0)的等待状态,也可以配合使用cv2.waitKey()函数来实现循环等待一段时间后自动退出

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值