【问题标题】:cv2.waitKey(0) returns Nonecv2.waitKey(0) 返回无
【发布时间】:2020-01-14 00:19:15
【问题描述】:

我尝试过使用

if cv2.waitKey(0) & 0xFF == ord('q'):
        break 

但我不断收到TypeError。但是,当我使用其中任何一个时,我的相机都不会响应代码。

import cv2
import numpy as np

capture = cv2.VideoCapture(0)


while True:
    ret, frame = capture.read()
    cv2.imshow("frame", frame)

    if cv2.waitKey(0) & 0xFF == ord('q'):
        break

capture.release()
cv2.destroyAllWindows()

如果 cv2.waitKey(0) & 0xFF == ord('q'):

TypeError: &: 'NoneType' 和 'int' 的操作数类型不受支持

进程以退出代码 1 结束

【问题讨论】:

  • 0xFF 是一个整数值,255 显然,cv.waitKey(0) 返回值为None。不过,您的问题是您使用的是& 而不是and& 是二元运算符,您正在寻找逻辑运算符 and - 这也将修复排序,因为 &== 强,但 ==and 强,所以你不需要括号。
  • @Gris 我认为二元运算符很好stackoverflow.com/a/52913689/2308683
  • @FunnyBunny 您能否提供更多见解:您是否看到cv2.imshow("frame", frame) 之后捕获的图​​像?您发布的错误是立即发生还是仅在您按下按钮后发生?您能否也澄清一下“但是,当我使用其中任何一个时,我的相机都不会响应代码”
  • @FlyingTeller 我在cv2.imshow("frame",frame) 之后看不到任何图像。当我只使用waitKey0xFF 时,没有错误但我的显示器不会给出任何响应。我认为它可能是相关的,但是当两者一起使用时,它似乎有TypeError

标签: python opencv


【解决方案1】:

虽然文档说明 waitkey 函数返回按下键的代码,但您可以提取该值并执行无检查

c = cv2.waitKey(0)
if c is not None and c & 0xFF == ord('q'):

【讨论】:

  • 这并没有解决根本问题。 waitKey 应该返回 int
  • 鉴于 cv2 不受 OP 控制,我认为这是一个合理的解决方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-24
  • 1970-01-01
  • 2018-11-13
  • 2017-12-04
  • 1970-01-01
  • 2020-07-24
相关资源
最近更新 更多