openCV无法打开USB摄像头问题

2023-11-17

用Python-OpenCV 打开USB摄像头时, 出现如下提示, 意思是 媒体类型不匹配

测试源代码

cap = cv2.VideoCapture(0)
    while cap.isOpened():

        start = time.time()
        is_opened, frame = cap.read()
        end = time.time()
        if i<10:
            i+=1
            print("### 读取图像流时间: %f 秒"%(end-start) )

            start = time.time()
            cv2.imwrite('I:/' + str(i) + '.jpg', frame)
            end = time.time()
            print("@@@ 保存图像时间: %f 秒" % (end - start))

        cv2.imshow('frame', frame)

        k = cv2.waitKey(1)
        if k == 27:
            break
        elif k == ord('s'):
            start = time.time()
            cv2.imwrite('I:/' + str(i) + '.jpg', frame)
            end = time.time()
            print("@@@ 保存图像时间: %f 秒" % (end - start))
            i += 1

    cap.release()

错误提示为:

CvCapture_MSMF::initStream Failed to set mediaType (stream 0, (640x480 @ 30) MFVideoFormat_RGB24(codec not found)

需要在初始化摄像头是增加一个参数 cv2.CAP_DSHOW, 之后即可以正常打开:

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

使用Linux开发板无法打开摄像头

使用普通用户,无权限打开摄像头, 而使用sudo, 则提示找不到cv2模块, 此时为环境变量问题, 有多种方法可以修改环境变量路径解决该问题, 比如修改/etc/sudoers, 编辑.bashrc,最后添加alias sudo='sudo env PATH=$PATH’等, 我主要使用如下方法

第一种方法

使用sudo -E指令,保留当前用户环境变量, 次方法用起来比较简单

debian@npi:~/tigerots/python$ sudo -E python open_cv2_photo.py
### 读取图像流时间: 1.561338 秒
### 读取图像流时间: 0.674829 秒
### 读取图像流时间: 0.622834 秒

第二种方法

  1. 在普通用户Python环境中查看环境变量:
debian@npi:~/tigerots/python$ python
Python 3.7.3 (default, Jul 25 2020, 13:03:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import sys
>>> sys.path
['', '/usr/lib/python37.zip', '/usr/lib/python3.7', '/usr/lib/python3.7/lib-dynload', '/home/debian/.local/lib/python3.7/site-packages', '/usr/local/lib/python3.7/dist-packages', '/usr/lib/python3/dist-packages']
>>>
>>>
  1. 在root用户中查看Python环境变量
debian@npi:~/tigerots/python$ sudo python
Python 3.7.3 (default, Jul 25 2020, 13:03:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import sys
>>> sys.path
['', '/usr/lib/python37.zip', '/usr/lib/python3.7', '/usr/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/dist-packages', '/usr/lib/python3/dist-packages']
>>>
  1. 找到环境变量的差异, 在Python代码中加入该环境变量
import sys
sys.path.append("/usr/local/lib/python3.7/dist-packages")
  1. 通过以上操作, 一般即可实现访问当前模块
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

openCV无法打开USB摄像头问题 的相关文章

随机推荐

  • LLDB 常用命令

    LLDB 小结 简介 LLDB 是新一代高性能调试器 其是一组可重用组件的集合 这些组件大多是 LLVM 工程中的类库 如 Clang 表达式解析器或 LLVM 反汇编程序等 LLDB 是 Xcode 中默认的调试器 并且支持调试 C C
  • complier之stack machine with one register

    place holder
  • python 报错汇总【持续更新中....】

    1 Variable encoder embedding encoder already exists disallowed 总结 由于跑的翻译模型需要构建两个embed 一直报这个错误 InvalidArgumentError see a
  • 软考-系统架构师-计算机与网络基础知识-计算机网络基础知识

    文章目录 1 网络概述 1 1开放系统互连参考模型 1 2OSI协议集 2 计算机网络 2 1广域网局域网和城域网 2 2网络互联 2 3Internet 3 网络管理与网络安全 3 1网络管理 3 2计算机网络安全 3 3VPN 4 网络
  • 大数据挖掘的意义是什么?

    数据挖掘一般是指从大量的数据中通过算法搜索隐藏于其中信息的过程 数据挖掘本质上像是机器学习和人工智能的基础 它的主要目的是从各种各样的数据来源中 提取出超集的信息 然后将这些信息合并让你发现你从来没有想到过的模式和内在关系 这就意味着 数据
  • Python:等差数列

    题目描述 数学老师给小明出了一道等差数列求和的题目 但是粗心的小明忘记了一 部分的数列 只记得其中 N 个整数 现在给出这 N 个整数 小明想知道包含这 N 个整数的最短的等差数列有几项 输入描述 输入的第一行包含一个整数 N 第二行包含
  • linux常会用到的命令

    查看gpu上运行的进程 nvidia smi 查看进程的完整信息 ps f p 进程号 搜索含有指定字符的进程信息 如radar ps ef grep radar 复制文件时排除某个文件夹 如从源路径中排除data rsync av exc
  • eNSP基础配置

    用户视图
  • latch&timeborrowing&Lookup latch

    原创文章 latch 锁存器 电路图结构如下 当 E 1 时 latch直传 transparent D端信号的变化会即时反应在Q端 当 E 0 时 latch关断 closed Q端保持关断瞬间D端的值 设计中使用Latch的好处是 相比
  • 【大数据】Flink 详解(三):核心篇 Ⅱ

    本系列包含 大数据 Flink 详解 一 基础篇 大数据 Flink 详解 二 核心篇 大数据 Flink 详解 三 核心篇 大数据 Flink 详解 四 核心篇 大数据 Flink 详解 五 核心篇 大数据 Flink 详解 六 源码篇
  • NoSQL - MongoDB及工具 - 安装

    1 应用场景 主要用于安装和使用MongoDB 2 学习 操作 1 文档阅读 NoSQL MongoDB 学习 实践 穿素白衫的中少年的博客 CSDN博客 2 整理输出 用于学习 推荐安装最新版本 或者 最新稳定版 这里就安装最新稳定版 如
  • vector string及数组使用

    使用vector输入字符串并输出字符串 include
  • 2023中兴笔试复盘

    选择加编程 选择题考的范围挺广的 编程题第一题有点难度 第二题还好 复盘一下遇到的有点卡顿的题目 1 排序问题 快速排序最适合排完全无序的数据 如果基本有序的数据反而会耗时比较长 原因在于这种情况下一般拿第一个数做基准值的话 容易出现按基准
  • synchronized的作用和用法

    郁闷 参考 synchronized的作用和用法 Java中Synchronized的使用 文章目录 简单介绍 用法 实战实例 修饰代码块 修饰普通方法 修饰静态方法 简单介绍 synchronized关键字是用来控制线程同步的 就是在多线
  • tensorflow学习笔记(1)-tensoflow的设计机制

    tensorflow将整个计算表征为一个图 graph 图的节点 node 是Operation 常常简称为ops 节点之间的边 edge 是张量 tensor 不能理解反了 用图的方式能很容易根据边的连接关系 发现可以并行执行的节点 运算
  • 【笔记】用python计算BS模型、隐波的笔记

    前言 这篇笔记是根据姜禄彬老板在公众号上发布的笔记复刻的 不同的是原作者用的是股票数据 我用的是比特币期权数据 这份笔记里主要是如何用python代码来计算BS模型 如何求隐含波动率 什么是波动率微笑 greeks等 整体还是有点乱 之后有
  • 半生已过:别赌感情,别猜人心

    感情中 很多时候 我们明明懂得了一些道理 却依然会屡屡受伤 是因为我们总是抱着一种信念 以为自己很在乎的人 真的和别人不一样 于是 我们常常毫无保留地信任一个人 坚定不移地相信一段感情 殊不知 期望越大 有时候失望也就会越大 看过一段话说
  • Gabor滤波进行目标图像纹理特征的提取

    1 傅里叶变换 1 简介 数字图像处理的方法主要分成两大部分 空域分析法和频域分析法 空域分析法就是对图像矩阵进行处理 频域分析法是通过图像变换将图像从空域变换到频域 从另外一个角度来分析图像的特征并进行处理 频域分析法在图像增强 图像复原
  • Mysql错误日志、通用查询日志、慢日志的介绍和二进制日志的查看和备份恢复

    目录 一 日志 1 日志和备份的必要性 2 mysql的日志类型 1 错误日志 2 通用查询日志 3 二进制日志 4 慢日志 一 日志 1 日志和备份的必要性 在数据库保存数据时 有时候会因为误删除数据库 意外断电或程序意外终止 由于病毒造
  • openCV无法打开USB摄像头问题

    用Python OpenCV 打开USB摄像头时 出现如下提示 意思是 媒体类型不匹配 测试源代码 cap cv2 VideoCapture 0 while cap isOpened start time time is opened fr