【问题标题】:AttributeError: module 'cv2.cv2' has no attribute 'release'AttributeError:模块'cv2.cv2'没有属性'release'
【发布时间】:2017-11-07 06:56:15
【问题描述】:

我来自 RDBMS 背景,刚开始使用 python。下面是我编写的一个简单代码,用于通过 python 调用我的网络摄像头

import cv2

vid = cv2.VideoCapture(0)
 while vid == True:
     print("Connected....");
if cv2.waitKey(0) : break

cv2.release();

但我收到错误

AttributeError: module 'cv2.cv2' has no attribute 'release'

在执行时。我正在使用 python3.5 和 linux 14.04 平台运行此代码。我可以看到通过 help("modules") 列表安装的 cv2 包,它也被导入而没有错误。但是我在 pycharm 的解释器列表中没有看到它。请帮忙。

【问题讨论】:

  • 似乎我在使用 openCV 和 python3.5 时遇到了问题,这些问题我仍然不知道。我切换回python2.7并使用link的博客安装opencv,它没有任何问题。

标签: python-3.x opencv cv2


【解决方案1】:

cv2.release() 不存在。我想你想做的是vid.release()

cv2 是 opencv 模块,vidVideoCapture 对象。这是你必须做的发布。

更新:

您的代码有几个错误。之前我只解决了你问的那个,但让我们来看看所有这些。

第一个,缩进错了,我猜可能是复制代码。

第二个

while vid == True:

这不是正确的做法。您可以使用vid.isOpened() 函数查看它是否打开/连接到网络摄像头。

第三个,说明后不用;

第四个,这个不是错误,而是没必要的东西

if cv2.waitKey(0) : break

如果不是必需的,waitKey 会将按下的键作为 ascii 字符返回,如果您使用 0 以外的数字,则如果没有按下任何键,则返回 0。但是使用 0 它将等待一个键被按下“阻塞”当前线程(如果你有多个线程)。但是,除非您打开了imshow 窗口,否则它不会等待。

现在,包含我编写的这些更改以及检查脚本是否可以连接到相机的完整代码将是

import cv2

vid = cv2.VideoCapture(0)
if vid.isOpened():
  print ("Connected....")
else:
  print ("Not Connected....")

vid.release()

以类似的方式,您可以在按下键之前显示视频:

import cv2

vid = cv2.VideoCapture(0)
if vid.isOpened():
  print ("Connected....")
  while True:
    ret, frame = vid.read()
    if ret:
      cv2.imshow("image", frame)
    else:
      print ("Error aqcuiring the frame")
      break
    if cv2.waitKey(10) & 0xFF:
      break
else:
  print ("Not Connected....")

vid.release()
cv2.destroyAllWindows()

如果有不清楚的地方,请随时提问:)

【讨论】:

  • aah...我的错...它确实停止了该错误,但仍然没有调用我的 cam。你能建议我缺少什么吗?
  • @PawanRawat 当然,我写了答案的更新。我想我涵盖了所有可能的问题,并给了你一些简单的例子来测试:)
  • 感谢 api55 的帮助...非常感谢您解释到那个级别。它实际上是我的第一个脚本......现在我执行了你提供的代码但是我收到消息“未连接..”......我还有什么遗漏吗?
  • @PawanRawat 没问题,如果您喜欢这个答案,请考虑投票或接受它,以便其他人知道这是一个可行的解决方案。对于另一个问题,它可能是几件事。如果vid.isOpened 返回false,您可以尝试vid.open() 并再次测试。如果仍然失败,OpenCV tutorials 建议先用另一个应用程序对其进行测试,例如 linux 中的奶酪。(sudo apt-get install cheese) 然后运行它
【解决方案2】:

导入 cv2 导入numpy

img = cv2.imread("lena.jpg", 1) cv2.imshow("图像", img) cv2.waitKeyEx(0) cv2.destroyAllWindows()

【讨论】:

  • 尝试使用 cv2.waitkeyEx(0)
  • 为了建立一个更好的答案,我建议您将所有信息合并到答案中(来自 cmets),最重要的是,添加一些关于它如何工作以及为什么解决 OP 问题的解释。
猜你喜欢
  • 2017-11-22
  • 2019-07-25
  • 2017-11-21
  • 2021-02-17
  • 2019-11-13
  • 2018-11-13
  • 2019-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多