当前位置: 首页 > 知识库问答 >
问题:

网络摄像头不能在OpenCV下工作-如何解决这个问题?

缪风史
2023-03-14

这是我的密码:

import numpy as np
import cv2

face_cascade = cv2.CascadeClassifier('haarcascase_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')

cap = cv2.VideoCapture(0)

while True:
    ret, img = cap.read()
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray,1.3,5)
    for (x,y,w,h) in faces:
        cv2.rectangle(img, (x,y), (x+w, y+h), (255,0,0), 2)
        roi_gray = gray[y:y+h, x:x+w]
        roi_color = img[y:y+h, x:x+w]

        eye = eye_cascade.detectMultiScale(roi_gray)
        for (ex,ey,ew,eh) in eye:
            cv2.rectangle(roi_color, (ex,ey), (ex+ew, ey+eh), (0,255,0), 2 )
    cv2.imshow('img',img)
    k= cv2.waitKey(30) & 0xff 
    if k == 27:``
        break

cap.release()
cap.destroyAllWindows()

以下是我遇到的错误:

错误:OpenCV(4.2.0)C:\项目\opencv-python\opencv\模块\imgproc\src\color.cpp:182:错误:(-215:断言失败)!_src.empty函数'cv::cvtcoly'

错误Traceback(最近的调用最后)在3而True: 4 ret, img=cap.read () ----

错误:OpenCV(4.2.0)C:\项目\opencv-python\opencv\模块\imgproc\src\color.cpp:182:错误:(-215:断言失败)!_src.empty函数'cv::cvtcoly'

共有1个答案

夏侯渊
2023-03-14

可能有很多原因,为什么它不工作(例如,一些操作系统将要求您开通权限,以访问网络摄像头),但是有几个问题与您的代码:

  • while循环的开始:不检查参数ret的值。最好是通过一个小检查来检查它的值,如如果没有ret:break退出循环。这对您的网络摄像头不工作没有帮助,但可以防止您看到的错误(ret为False,因此img可能为空且没有数据)
 类似资料:
  • 我在主机上运行Ubuntu18.04,在LXC容器中运行Ubuntu20.04。我的目标是在一个LXC容器中运行ROS2(需要Ubuntu 20.04),然后用它连接两个dynamixel伺服电机和一个USB Logitech网络摄像头。我还在容器中安装了miniconda,以便安装OpenCV和dlib。我还在容器内使用conda虚拟环境。 所有提到的软件工作正常。现在我需要用OpenCV访问网

  • 大家好,我使用opencv从默认摄像头获取网络摄像头提要,我希望在windows窗体上的图片框中显示它。我的网络摄像头打开了,但由于某些原因,该提要从未显示在我的picturebox上。请有人帮我指出/解决这个问题,因为我现在被困在这里。提前谢谢。 以我的形式。h、 我有这个代码可以将图片盒发送到myform。cpp文件: 绘制代码获取视频并放入我的图片框myform.cpp是: 这是我的调试日志

  • 我试图从我的摄像头获取图像使用导入OpenCV的python代码。代码如下: 代码工作正常,除了相机默认分辨率为640x480,我的代码似乎只能设置比这更低的分辨率值。例如,我可以将图像大小设置为320x240,但我不能将其更改为800x600。我没有出现错误:只是分辨率设置为默认值(640x480),因为我试图将其设置为更高的值。 我正在使用的摄像头(没有其他网络摄像头连接到计算机)是Quick

  • Dlib有一个非常方便、快速和高效的目标检测程序,我想做一个类似于这个例子的酷脸跟踪例子。 OpenCV,这是广泛支持,有视频捕捉模块,这是相当快的(五分之一秒的快照相比,1秒或更多的调用一些程序,唤醒网络摄像头和获取图片)。我将此添加到Dlib中的人脸检测器Python示例中。 如果您直接显示和处理OpenCV VideoCapture输出,它看起来很奇怪,因为OpenCV显然存储BGR而不是R

  • 问题内容: 我一直在尝试使用Python创建一个简单的程序,该程序使用OpenCV从我的网络摄像头获取视频供稿并将其显示在屏幕上。 我知道我之所以在这里,是因为创建了窗口,并且网络摄像头上的灯闪烁了,但是它似乎在窗口中什么都没有显示。希望有人可以解释我在做什么错。 在不相关的注释上,我注意到我的网络摄像头有时会在中更改其索引号,有时我需要输入0、1或2,即使我只连接了一个摄像头,也没有拔下插头(我

  • 我目前正在做一个项目,从网络摄像头捕捉视频,并通过UDP发送编码流来做实时流。 有人说从cap.read得到的帧已经是解码帧,我不知道这是如何以及何时发生的。我想要的是编码的帧或流。我应该怎么做才能得到它?我应该再编码一次吗?