python opencv 调用摄像头失败问题的解决 Windows

2023-10-26

省流:

  1. 内含 Python Opencv 双目相机拍照代码(手动 or 自动),可自取;
  2. 如果你的 cv2.VideoCapture() 函数卡住但不报错,打开 Windows “相机”应用可以正常看到摄像头画面,且能够正常用 cv2.imshow() 打开图像,请继续阅读。

这个学期选修了方璐老师的媒体与认知课程,期末的 Final Project 涉及到双目相机的标定问题(也许期末做完 Project 我会发一些感想和体会?)

助教提供了一段基于 Python Opencv 的双目相机自动拍摄和保存的代码给我们直接用,但是在运行的时候我遇到了奇怪的现象,程序卡在 cv2.VideoCapture(0) 这里就不能运行,不报错,就是单纯的卡在这里。先放代码:

import time

import cv2
import numpy as np

AUTO = False  # 自动拍照,或手动按s键拍照
INTERVAL = 2  # 自动拍照间隔

camera_0 = cv2.VideoCapture(0) # 代码运行的时候卡在这里!!
camera_1 = cv2.VideoCapture(1)

cv2.namedWindow("left")
cv2.namedWindow("right")

counter = 0
utc = time.time()
folder = "./SaveImage/"  # 拍照文件目录, 先新建再运行,否则无法保存


def shot(pos, frame):
    global counter
    path = folder + pos + "_" + str(counter) + ".jpg"
    cv2.imwrite(path, frame)
    print("snapshot saved into: " + path)


while True:
    ret_0, frame_0 = camera_0.read()
    ret_1, frame_1 = camera_1.read()
    left_frame = frame_0
    right_frame = frame_1
    cv2.imshow("left", left_frame)
    cv2.imshow("right", right_frame)
    now = time.time()

    if AUTO and now - utc >= INTERVAL:
        shot("left", left_frame)
        shot("right", right_frame)
        counter += 1
        utc = now

    key = cv2.waitKey(1)

    # press 's' in keyboard for capturing, 'q' for exit.
    if key == ord("q"):
        break
    elif key == ord("s"):
        shot("left", left_frame)
        shot("right", right_frame)
        counter += 1

camera_0.release()
camera_1.release()
cv2.destroyWindow("left")
cv2.destroyWindow("right")

这就比较违反常理,我和助教进行了一番讨论,无果。

最后解决的办法也比较奇怪,把卡住的代码修改为:

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

就可以了。(当然每一个 cv2.VideoCapture 都要改一下的)

这里我并不知道是怎么回事,我找到的一些资料说这个参数的作用是“不指定无法使用高分辨率摄像头”,那是不是有可能是因为课程提供的摄像头非常高清导致不设置不能使用(瞎猜,如有了解万望赐教)?因为我对 opencv 这个库基本上不了解,感觉这个大作业里面涉及到 opencv 的也就是拍个照,就不会深究了。

希望能帮助到一些和我一样在这里 stuck 的同学们~

(希望我的大作业能继续推进啊啊啊啊啊啊)

2022.12.14 补充

最近准备用新装的 Fedora 37 做开发平台了,于是把之前的代码 copy 到 Linux 上试了一下,发现 Linux 好像并不需要加这个参数……就还挺无语的 orz

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python opencv 调用摄像头失败问题的解决 Windows 的相关文章

  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • 如何使用Conda下载python包并随后离线安装?

    我知道通过 pip 我可以使用以下命令下载 Python 包 但 pip install 破坏了我的内部包依赖关系 当我做 pip download
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • ICIF2023化工展首亮相,宏工科技解决方案助力制造升级

    ICIF China 2023中国国际化工展览会于9月4日 6日在上海新国际博览中心举办 宏工科技携化工物料处理一站式解决方案首次亮相 同化工行业全产业链共叙物料处理自动化未来 宏工科技是一家提供物料处理自动化设备 系统与服务的国家级高新技
  • windows创建、查看软连接

    创建软连接 mklink j 要创建的目录 已存在的目录 查看软连接 cd到所在目录下 使用dir命令即可看到软连接的位置
  • openwrt从入门到精通-开篇

    openwrt应用前景如何 为什么要学习openwrt呢 一个很重要的原因就是 高通等网通芯片厂家给的sdk 就是集成在openwrt里面的 他们直接拿openwrt系统来深度定制自己的芯片sdk 所以 如果你要做网络产品 使用高通等网通类
  • 腾讯、阿里、字节跳动三家公司有何区别!?

    互联网人爱相互跳槽 腾讯和阿里一直相互流动 近两年势头强劲的字节跳动也成为跳槽热门去向 那么在这三家公司工作有什么区别呢 一起来看 旗舰产品 擅长领域 腾讯 是社交领域的霸主 阿里 是电商界的巨头 字节跳动 是内容领域的王者 公司特色 腾讯
  • Spring的xml配置

    Spring的xml依赖注入 文章目录 Spring的xml依赖注入 1 Bean依赖注入方式 1 1 set注入 1 2 构造器注入 2 Bean依赖注入的数据类型 2 1 普通数据的注入 2 2 集合数据类型 List lt Strin
  • 浅谈 防抖和节流

    防抖和节流 是优化高频率执行代码的手段 目的 节约浏览器 服务器的性能 主要方式 减少函数执行的次数 函数防抖 debounce 函数防抖 事件被触发 等待n秒后再执行回调 如果在这n秒内又被触发 则重新计数 防抖的目的 目的是为了让一定时
  • pybind 回调 多线程 异常

    thread代码 int RecvThread SOCKET sockClient py function caminfocall g caminfocall caminfocall py function caminfocall py f
  • quickjs集成mfc的实现

    QuickJS是一个轻量级的JavaScript解释器 可以在各种平台上运行 如果你想在MFC应用程序中使用QuickJS 你可以使用以下方法来实现 下载QuickJS源代码 然后在MFC应用程序中包含QuickJS文件 在MFC应用程序中
  • 操作系统笔记整理 ——目录索引页

    操作系统笔记整理 目录索引页 笔记整理参考书籍 计算机操作系统 第四版 汤小丹等编著 以下笔记整理主要包含了前八章的内容 具体包含的内容会在下面详细说明 笔记尚有许多不足之处 如果大家发现错误还请私信我修改 感谢 目录即链接 点击目录即可跳
  • XML:你真的有必要了解一下我

    对XML的深入浅出 一 概念 二 功能 三 基本语法 四 快速入门 五 组成部分 5 1文档声明 六 约束 6 1 DTD 6 2 Schema 七 解析 7 1 解析XML的方式 7 2常见解析器 八 Jsoup详解 8 1 快速入门 8
  • 第一届全国技能大赛(世赛项目)河北省选拔赛 网络安全项目任务书

    第一届全国技能大赛 世赛项目 河北省选拔赛 网络安全项目任务书 模块A 网络基础构建 网络基础服务搭建 1 第一部分 网络基础构建 2 第二部分 网络基础服务搭建 模块B 网络安全事件响应 数字取证调查和应用程序安全 1 第一部分 网络安全
  • 流程制造行业MES系统的四大应用特点

    MES制造执行系统就是生产加工过程执行系统 该系统可以融合生产规划信息内容及物料 供应 采购和库存等生产现场管理信息内容 根据数据采集系统 然后融合加工过程中的物料 工时 机器设备 人员等信息内容 让生产管理人员对加工过程及进度 建立一个及
  • 如何利用int型变量存放ip值(c语言)

    IP地址 ip地址是一个32位的二进制数 实际上是4个字节 点分十进制表示为 a b c d a b c d的值都是 0 255 例如ip地址 192 168 0 1 就是一个合格ip地址 可以知道a b c d这些字段都是一个无符号字节表
  • 关于前端文件上传后将文件保存至服务器路径存储在数据库并在相应页面展示的总结

    前期准备 1 开发环境及框架的搭建 基于SSH开发框架 2 数据库建表 表应该有一个字段用来存储文件在服务区上的存储路径 3 map xml文件 4 Action xml文件 5 写好实体类及get set 方法 6 DAO层 7 Acti
  • 线性代数(3)—— 逆矩阵、伴随矩阵、初等矩阵

    参考 张宇高等数学基础30讲 文章目录 1 矩阵的逆 1 1 逆矩阵的定义 1 2 逆矩阵性质与重要公式 1 3 用定义求逆矩阵 1 4 例题 2 伴随矩阵 2 1 伴随矩阵的定义 2 2 伴随矩阵的定义与重要公式 2 3 用伴随矩阵求逆矩
  • 每日一题 LCP 06. 拿硬币

    难度 简单 简单题 不多说 class Solution def minCount self coins List int gt int res 0 for coin in coins res ceil coin 2 return res
  • 国内主要大数据平台比较

    在当前信息时代 大数据处理和分析变得越来越重要 国内涌现了许多主流的大数据平台 它们提供各种功能和工具 帮助企业和组织处理和分析海量数据 本文将比较几个主要的国内大数据平台 并提供相应的源代码示例 阿里云大数据平台 阿里云大数据平台是国内领
  • [JSP暑假实训] 四.MyEclipse+Servlet+JSP实现火车票网站查询、修改、删除操作

    本系列文章是作者暑假给学生进行实训分享的笔记 主要介绍MyEclipse环境下JSP网站开发 包括JAVA基础 网页布局 数据库基础 Servlet 前端后台数据库交互 DAO等知识 前一篇文章讲解了通过Servlet获取所提交的数据 这篇
  • OSB:Rest、Soap、SoapDB接口开发学习

    OSB Rest Soap DBSoap接口开发 开发配置 1 开启服务 2 登录WebLogic Server管理控制台 3 启动osb服务 4 登录ServiceBus控制台 Rest接口的开发 1 测试接口是否可以调通 2 开发接口
  • python opencv 调用摄像头失败问题的解决 Windows

    省流 内含 Python Opencv 双目相机拍照代码 手动 or 自动 可自取 如果你的 cv2 VideoCapture 函数卡住但不报错 打开 Windows 相机 应用可以正常看到摄像头画面 且能够正常用 cv2 imshow 打