Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
openCV问题与网络摄像头视频源_Opencv - Fatal编程技术网

openCV问题与网络摄像头视频源

openCV问题与网络摄像头视频源,opencv,Opencv,我刚刚开始熟悉openCV,在尝试使用笔记本电脑的网络摄像头进行基本视频处理时遇到了一个问题: import cv2 as cv import numpy as np cap= cv.VideoCapture(0) while True: ret,frame =cap.read() cv.imshow("frame",frame) k=cv.waitKey(0) if k==27 : break cap.rele

我刚刚开始熟悉openCV,在尝试使用笔记本电脑的网络摄像头进行基本视频处理时遇到了一个问题:

import cv2 as cv
import numpy as np

cap= cv.VideoCapture(0)


while True:
    ret,frame =cap.read()
    
    cv.imshow("frame",frame)
    k=cv.waitKey(0)
    if k==27 :
        break
cap.release()
cv.destroyAllWindows()
输出:

很明显,网络摄像头已打开,窗口已正确打开,但没有显示任何提要

我在下载的视频中尝试了相同的代码。(
cap=cv.VideoCapture(“test.mp4”)
),然而,在我退出程序之前,窗口只显示了一个静止帧

代码出了什么问题?

cv2。waitKey(0)将显示一个静态图像,因此要获得连续提要,您需要执行以下操作cv2.waitKey(1)

 k=cv.waitKey(1)
     if k==27 :
         break
这解决了您的第二个问题,作为您的第一个问题,我认为您的网络摄像头存在问题,请先测试它

现在,当视频结束时,cv.imshow()将在“frame”中获得一个空对象,并引发一个错误。要防止出现这种情况,请使用如下检查:

  ret,frame =cap.read()
  if frame is None:
    break
  cv.imshow("frame",frame)

谢谢,这很有效,但是在视频结束后,我得到了这个错误:“,第10行,在cv.imshow(“frame”,frame)cv2.error:OpenCV(4.5.1)C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-wvn_it83\OpenCV\modules\highgui\src\window.cpp:376:错误:(-215:断言失败)函数“cv::imshow”中的size.width>0&&size.height>0同样,窗口在我没有按enter键的情况下被破坏,但我认为这是因为错误。@satan29当cv.imshow()函数获取一个要显示的空对象。因此,很明显,在视频结束时,它没有接收到捕获并抛出错误,为了防止此错误,请在处理之前使用检查。让我更新我的回答谢谢。但我遇到的另一个问题是视频提要非常快进:一个7秒的剪辑只运行约1-2秒…是的,这是这是因为cv2.waitKey(1)等待1ms来显示一帧,所以将延迟值增加一点,并检查是否获得所需的速度。此外,速度取决于输入视频的帧速率。通过“cap.get(5)”检查fps