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 - 应用程序中没有网络摄像头的主要内容,如果未能解决你的问题,请参考以下文章
Win7_64bits下Visual Studio2012中安装配置OpenCV
Visual Studio 2017+OpenCV-入门之环境搭建
visual studio 2019中C++安装opencv