cv2.error: Unknown C++ exception from OpenCV code

cv2.error: Unknown C++ exception from OpenCV code

我无法在 python

中 运行 cv2 .read()

每次我 运行 一个简单的代码只是为了从我的网络摄像头看到我自己。它给出了一个我无法解决的奇怪错误,我几乎已经搜索了很多。 我只想通过网络摄像头捕捉我的视频。

这是我的代码,对我来说可能没问题。

import cv2
vid = cv2.VideoCapture(0)

while True:
    _, frame = vid.read()

    # Display the resulting frame
    cv2.imshow('my_frame', frame)

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

vid.release()
cv2.destroyAllWindows()

每次我 运行 这段代码都会给出以下错误 -

_, frame = vid.read()
cv2.error: Unknown C++ exception from OpenCV code

我不知道如何解决这个问题。我在整个平台上搜索了很多。

edit:我认为我的网络摄像头工作正常,因为当我执行代码 运行s 并打开 window 并显示来自网络摄像头的图像时,图像是灰色的并且可以正常工作只有一两秒钟。它立即显示错误。

我的pip版本是21.1.1。 软件包列表 -

Package               Version
--------------------- --------
numpy                 1.20.3
opencv-contrib-python 4.5.2.52
Pillow                8.2.0
pip                   21.1.1
pywin32               300
setuptools            56.2.0

谢谢

备注:

  • 前两行没有错误。
  • 第三行,(_,)处,不管下划线多少,2、3、4,还是报同样的错误。
  • 用 return 关键字替换 (_,) 会带出错误。
  • open() 包含 cv2.VideoCapture(0) 仍然会出错。
  • 即使卸载并重新安装 OpenCV,在 opencv-python 4.5.2.52.
  • 中仍然如此
  • 子行“ret”在该脚本中不起作用。
  • 用return关键字替换(_,)仍然会出错。
  • 删除 (_,) 仍然会出现同样的错误。
  • cv2 可以很好地显示已拍摄的照片,但不能在代码行中实时显示(不知何故)。
  • 一些教程,尽管更新了日期,但它们的代码在 (ret/s/etc.), frame = (cap/vid).read()[=64= 之后不起作用]
  • 用 open() 封闭第一个变量赋值将进入更多错误的字段。

如果是这样,并且有人 tutorialvid.read() 将 return 一个元组,那么就存在偏差。 print(vid) 会 return 类似于 <VideoCapture 02D32370>.

使用文本文件,如

file=open('C:\Users\username\Documents\New folder\abcdefghijklmnopqrstuvw.txt')

print(file),它returns

<_io.TextIOWrapper name='C:\Users\username\Documents\New folder\abcdefghijklmnopqrstuvw.txt' mode='r' encoding='cp1252'>

text=file.read()print(text 之前)。

OpenCV 在我的计算机上可以很好地显示静态图像,但不能在一组(视频)中记录一系列图像。

  • 在我的电脑上,除了使用其他模块之外别无他法。

编辑: 尽管我上面说了,您需要将 videocapture 中的 0 替换为 0+cv2.CAP_DSHOW,这基本上转化为索引差异 (n) 加上默认相机索引号。

尝试替换此行:

vid = cv2.VideoCapture(0)

vid = cv2.VideoCapture(0, cv2.CAP_DSHOW)