Visual Studio、OpenCV、Python - 应用程序中没有网络摄像头

Posted

技术标签:

【中文标题】Visual Studio、OpenCV、Python - 应用程序中没有网络摄像头【英文标题】:Visual Studio, OpenCV, Python - no webcam in app 【发布时间】:2018-09-25 20:45:06 【问题描述】:

我正在尝试通过 OpenCV 库在 Python 中使用 Visual Studio(和 Visual Studio Code)。

我想从 OpenCV 的示例中启动此代码,该示例显示来自我的网络摄像头的实时视频:

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    # Display the resulting frame
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

但我在cv2.imshow('frame',frame) 行中得到一个例外:

cv2.error: OpenCV(3.4.3) C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:356: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

我在命令提示符下通过pip install opencv-python 安装了 OpenCV

我在使用 Visual Studio 2017 或 Visual Studio Code 时遇到同样的错误。

我检查了我的网络摄像头的隐私,我的所有应用都可以看到它。

使用 Jupyter Notebook 我可以完美地运行此代码。

你知道重点吗,为什么我无法从 VS 访问我的网络摄像头,但在 Jupyter Notebook 中我可以毫无问题地做到这一点?

编辑 1

当我设置时

cap = cv2.VideoCapture(0) 索引到-1 代码编译,但我得到黑色输出。正如我之前所说,在 Jupyter 中,我可以访问笔记本电脑中的网络摄像头。我使用的是 Windows 10

编辑2

当我在imshow() 之前添加该行时:

    if ret:
        print("error")
        continue

我总是在命令提示符下得到error 输出。即使我等了一会儿,它仍然打印“错误”。就像我说过几次一样,在 Jupyter Notebook 中,我可以通过上面的代码启动我的网络摄像头

【问题讨论】:

【参考方案1】:

我相信你会想要取消缩进块

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

目前,它嵌套在 while(True) 循环中,因此过早释放捕获并导致读取错误。 请记住,在 Python 中缩进真的很重要。

【讨论】:

我明白了。然后,尝试以下操作:在 imshow() 函数之前插入 'if ret:' 条件。一些网络摄像头初始化缓慢,可能会错误地读取其中的第一帧。 我在 print 中添加了if ret: 行,看起来,就像我一直收到“错误”一样,我试图从网络摄像头捕捉帧。等待一段时间,但它总是得到“ret”或“error”输出。查看我的编辑 您能否安装多个 OpenCV 实例?我记得当我从源代码安装 OpenCV 并保持 PyPI 版本完好无损时,我偶然发现了类似的问题。 等等,我错过了一件事。如果帧已成功检索,则 ret 变量返回 True,因此您需要将条件设为“如果不是 ret:”,而不是相反。

以上是关于Visual Studio、OpenCV、Python - 应用程序中没有网络摄像头的主要内容,如果未能解决你的问题,请参考以下文章

使用visual studio搭建opencv项目

Win7_64bits下Visual Studio2012中安装配置OpenCV

Visual Studio 2017+OpenCV-入门之环境搭建

visual studio 2019中C++安装opencv

Visual Studio 2010下的OpenCV 2.4.10安装过程

OpenCV:Visual Studio 2013 Ultimate中OpenCV 2.4.8 配置