加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何使用OpenCV从网络摄像头读取视频?

发布时间:2020-12-20 13:17:55 所属栏目:Python 来源:网络整理
导读:我正在关注 the official documentation,尝试从网络摄像头中读取视频.当我从文档中运行一段代码时: import numpy as npimport cv2cap = cv2.VideoCapture(0)while(True): # Capture frame-by-frame ret,frame = cap.read() # Our operations on the frame c
我正在关注 the official documentation,尝试从网络摄像头中读取视频.当我从文档中运行一段代码时:

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

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

    # Our operations on the frame come here
    gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)

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

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

它失败并带有以下输出:

OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor,file /io/opencv/modules/imgproc/src/color.cpp,line 9748
Traceback (most recent call last):
File “capture.py”,line 11,in
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
cv2.error: /io/opencv/modules/imgproc/src/color.cpp:9748: error: (-215) scn == 3 || scn == 4 in function cvtColor

进一步检查,似乎:

> ret永远是假的.
>添加cap.get(3)(以获得图片的宽度)返回0.0.
>如果我测试cap.isOpened(),结果始终为False.
>如果我添加对cap.open(0)的调用,open也会返回False.
>调用cap.open(“/ dev / video0”)不会改变任何内容.
>用cap = cv2.VideoCapture(“/ dev / video0”)取代cap = cv2.VideoCapture(0)无效.

在VLC中打开/ dev / video0显示来自网络摄像头的视频.当我打开Cheese时,它还会显示来自网络摄像头的视频.只有一台摄像机连接到PC.

有什么建议?

解决方法

你可能错过了FFMPEG. OpenCV需要编解码器信息来解码ffmpeg提供的视频,打开相机等.

在Windows上安装FFmpeg的步骤在此处详细说明http://www.wikihow.com/Install-FFmpeg-on-Windows.遵循Linux相当于此可能会解决您的问题

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读