尝试使用网络摄像头 python opencv 捕获视频时 gstreamer 出现严重错误

2023-11-23

我正在尝试使用 opencv 和 python 通过简单的代码通过网络摄像头拍摄视频

import numpy as np
import cv2

cap = cv2.VideoCapture(0)
print('cap.isOpened')
if cap.isOpened():
    print ('cap is opened')
    while(True):
        re,img=cap.read()
        cv2.imshow("video output", img)
        k = cv2.waitKey(10)&0xFF
        if k==27:
            break
cap.release()
cv2.destroyAllWindows()

如果我尝试播放现有视频(例如 .mp4 文件),它工作正常。但是当我尝试使用网络摄像头时出现错误

GStreamer-CRITICAL **:gst_element_get_state:断言“GST_IS_ELEMENT(元素)”失败 盖子已打开

有关更多信息,我正在使用 odroid xu4 和 ubuntu 16.04,网络摄像头我使用 Logitech c170(它在网络摄像头测试中正常工作并使用 guvcview),认为它不适用于奶酪和 camorama。

请需要有关此方面的帮助..


以下解决方法有合理的工作机会:

cap = cv2.VideoCapture(0, cv2.CAP_V4L)

OpenCV 3 中添加了选择后端的功能,请参阅VideoCapture() docs.

解决方法将后端切换为V4L(来自默认的 GStreamer)适用于我的 OpenCV 3.4.4 版本,在 16.04 盒子上支持 GStreamer。这里是问题代码的输出以及之后的解决方法export OPENCV_VIDEOIO_DEBUG=TRUE:

[ WARN:0] VIDEOIO(cvCreateCameraCapture_V4L(index)): trying ...

[ WARN:0] VIDEOIO(cvCreateCameraCapture_V4L(index)): result=0x20b1470 ...

cap.isOpened
cap is opened

如果该解决方法不适合您,您可以检查您的 OpenCV 版本是否支持V4L using print(cv2.getBuildInformation())。这是我的构建的相关部分:

Video I/O:
  DC1394:                      YES (ver 2.2.4)
  FFMPEG:                      YES
    avcodec:                   YES (ver 56.60.100)
    avformat:                  YES (ver 56.40.101)
    avutil:                    YES (ver 54.31.100)
    swscale:                   YES (ver 3.1.101)
    avresample:                NO
  GStreamer:                  
    base:                      YES (ver 1.8.3)
    video:                     YES (ver 1.8.3)
    app:                       YES (ver 1.8.3)
    riff:                      YES (ver 1.8.3)
    pbutils:                   YES (ver 1.8.3)
  libv4l/libv4l2:              NO
  v4l/v4l2:                    linux/videodev2.h
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试使用网络摄像头 python opencv 捕获视频时 gstreamer 出现严重错误 的相关文章

随机推荐

  • 如何定义 shell 脚本变量使其具有脚本之外的作用域

    我正在使用 Ubuntu Natty 我有一个 shell 脚本 已保存到 etc init d qstart shell脚本包含以下内容 apt get y update apt get y upgrade apt get y insta
  • JQuery/Javascript 或其他方式静默打印仅一次

    任何人都知道如何在跨浏览器 API 或 jQuery 或 javascript 等库中打印文件而不显示打印预览 打印内容而无需打印预览 仅静音打印 打印一次 当打印软拷贝时 软拷贝就会过期 因为出于安全原因 我想避免用户重新打印不止一份软拷
  • 测试框架表示实体没有为内置实体定义键

    Castle Proxies IdentityUserLogin EntityType IdentityUserLogin has no key defined Define the key for this EntityType 我正在尝
  • 如何在 html5 canvas 中对齐文本?

    如何在 html5 画布中对齐文本以 对齐 在下面的代码中 文本可以左 右 中心对齐 我需要设置align justify 请建议如何做到这一点 HTML
  • 按更改类型过滤 git diff

    有没有办法限制git diff更改文件 我想查看两次提交之间的差异 但排除其中一个或另一个中不存在的路径 添加 删除 下面的 Perl 一行行说明了我想要的大部分内容 git diff master perl lnwe print unle
  • Spring Boot应用程序中环境特定的application.properties文件[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 在我的 Spring Boot 应用程序中 我想创建特定于环境的属性文件 我的应用程序在 war 中的打包类型 我正在嵌入式 tomcat 中执行它 我使用 sts 并从 sts
  • WiX ServiceInstall - 将服务设置为以当前 Windows 用户身份运行

    我正在使用 WiX 安装 Windows 服务 如何使服务在运行安装程序的 Windows 用户上下文中运行 您需要拥有要运行服务的用户的帐户名和密码 我通过向安装程序添加自定义 UI 来要求输入用户名和密码 然后使用 ServiceIns
  • 了解私人设置者

    我不明白需要有从 C 2 开始的私有设置器 对我来说 有一个 setter 方法可以让用户在该类中设置一些变量 这样做时 我们不会将变量直接暴露给用户 相反 我们让他们通过这个公共 setter 方法来完成此操作 这对我来说是使用 封装 有
  • 在引用限定符上重载成员函数的用例是什么?

    C 11 使得基于引用限定符重载成员函数成为可能 class Foo public void f for when this is an lvalue void f for when this is an rvalue Foo obj ob
  • 使用 jQuery 制作动画时失去悬停(不移动鼠标)

    我有这行缩略图 我正在使用 jQuery 对其进行动画处理 每个缩略图都有一个悬停和活动类 它们工作正常 但是当我对列表进行动画处理时 鼠标光标下的新缩略图不应用悬停 每次点击后我都必须稍微移动鼠标吗 这有点难以解释 我在这里做了一个小提琴
  • synaptic js lstm rnn 算法的简单示例

    没有一个真是太疯狂了非常简单LSTM RNN 预测时间序列数据的示例 https github com cazala synaptic https github com cazala synaptic wiki Architect lstm
  • Android(三星 S4)HTML5 视频暂停

    我正在使用 Android Webview 播放 html5 视频 包括 Youtube 视频 我自己的标签和 Youtube 嵌入的 iFrame 我在使用 Samsung Galaxy S4 时遇到了问题 具体情况如下 播放视频 视频播
  • android sqlite检查是否插入新值

    我正在使用 sqlite 我成功创建了数据库和表 我还编写了可以在表中插入新值的代码 我的代码工作完美 但现在我想显示例如 如果插入新值则显示 toast 消息 否则在 toast 或其他内容中显示错误消息 这是我插入表的源代码 publi
  • 调试asp.net突然停止

    我有一个奇怪的错误 我正在调试一个 asp net 站点 突然它停止了 Visual Studio 保持调试模式 我的 Web 应用程序保持正常运行 我发现this发布 但我不认为后台线程导致了这个问题 代码周围甚至有一个 try catc
  • 查找给定素数之后的 n 个素数,而不使用任何检查素数的函数

    如何编写一个程序来查找给定数字后面的n个素数 例如100 后的前 10 个素数 或 1000 后的前 25 个素数 编辑 下面是我尝试过的 我以这种方式获得输出 但是我们可以在不使用任何素性测试函数的情况下做到这一点吗 include
  • jQuery DataTables 按 2 列排序

    我在用jQuery 数据表为我的一张桌子设计样式并提供功能 My Goal 根据资金类型是否活跃进行排序 正如您所看到的 这就是它目前正在做的事情 现在 我想订购Funding按字母顺序排列 所以我想要的结果应该是 Funding One
  • 为什么我每次使用 mingw gcc4.8.1 运行 std::random_device 都会得到相同的序列?

    我使用以下代码来测试C
  • ASP.NET Core Identity 模拟特定用户

    假设我有以下角色 Admin User 我希望管理员角色用用户角色模拟特定用户帐户 但不知道该特定用户帐户的密码 管理员应该能够模拟应用程序中的任何用户 并能够以用户本人的身份浏览应用程序 我找到了一个链接这实际上是在 ASP NET MV
  • 使用 javascript 复制到剪贴板以获取phonegap

    我正在为phonegap 平台使用javascript mobile jquery 接口开发一个应用程序 现在我在网上看到了很多尝试复制到剪贴板的例子 不幸的是它们都不适合我 我对浏览器中的功能不感兴趣 只要它在通过电话间隙转换后能够工作
  • 尝试使用网络摄像头 python opencv 捕获视频时 gstreamer 出现严重错误

    我正在尝试使用 opencv 和 python 通过简单的代码通过网络摄像头拍摄视频 import numpy as np import cv2 cap cv2 VideoCapture 0 print cap isOpened if ca