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

这篇具有很好参考价值的文章主要介绍了python opencv 调用摄像头失败问题的解决 Windows。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

省流:

  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文章来源地址https://www.toymoban.com/news/detail-449751.html

到了这里,关于python opencv 调用摄像头失败问题的解决 Windows的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • opencv-python调用摄像头失败 global /io/opencv/modules/videoio/src/cap_v4l.cpp (1000) tryIoctl VIDEOIO(V4L2

    Ubuntu 18.04 aarch64 Python 3.7.15 opencv-python 4.6.0 插入USB摄像头后, /dev/video0 会正常出现,使用 fswebcam 也能正常拍摄照片。但运行 opencv-python 的视频拍摄例程时出错,例程如下。 如果例程正确运行,屏幕窗口中将显示灰度处理后的摄像头实时视频。 报错信息如下 单步调试后,发现

    2023年04月24日
    浏览(77)
  • python实现opencv调用摄像头

    Python的opencv库提供了一种简单而高效的方法来处理图像,包括从摄像头中读取视频流。在本篇技术博客中,我们将介绍如何使用Python的opencv库调用IP摄像头和本地摄像头的代码。 首先,我们需要安装Python的opencv库,可以使用pip install opencv-python命令进行安装。 在使用IP摄像头之

    2024年02月11日
    浏览(47)
  • Python进阶,使用 opencv 调用摄像头进行拍照

             opencv 支持 Python 版本的模块叫作 opencv-p hon ,可直接使用 pip install opencv-python 令进行安装,但常常会因为网络等问题导致失败。推荐使用离线模式来安装 opencv 模块。 下载完安装包后,使用如下命令进行安装: D: pip install opencv

    2024年02月11日
    浏览(69)
  • Python+OpenCV 调用手机摄像头并实现人脸识别

    文章内容 : 1、windows 环境下安装 OpenCV 机器视觉环境搭建; 2、基于通过 Python+OpenCV 调用 手机摄像头 并实现人脸检测识别。 操作环境:Windows 10 64位 开发 IDE:Spyder 4.2.5 Python:3.8 OpenCV:OpenCv-Python 4.5.3 硬件需要:PC(win10)、手机 主要介绍使用 pip 安装 OpenCV(使用.whl文件安装

    2024年02月09日
    浏览(56)
  • 【深度学习】python使用opencv调用摄像头拍摄并保存图片

    打开pycharm,新建一个camerm.py文件,把下面代码复制粘贴进去就可以了。 需要安装两个库:pip install opencv-python;pip install numpy

    2024年02月11日
    浏览(42)
  • 【CV】树莓派+OpenCV-python解决摄像头分辨率及帧率过低无法调整问题

    笔者使用的是USB摄像头。 如果你使用的是CSI摄像头, vcgencmd get_camera 命令可能能够帮到你。希望读取高帧率可以看看CSDN-树莓派ARM64系统中如何设置opencv-python读取高清摄像头画面 如果你使用的是USB摄像头, vcgencmd get_camera 命令会出现 supported=1 detected=0 的提示,这是正常的。同

    2024年02月05日
    浏览(93)
  • 树莓派利用python-opencv使用CSI摄像头调用监控视频

    目录 一、安装python-opencv。 二、使用工具Xshell7和MobaXterm 三、连接并打开CSI摄像头 3.1连线如图所示: 3.2打开摄像头 四、编写摄像头代码调用摄像头         一定要选择配置好的安装python-opencv,不要去配置安装,然后还cmake编译,没有必要基本上安装过程都会报2-3个错误,还

    2023年04月17日
    浏览(55)
  • 树莓派CSI摄像头使用python调用opencv库函数进行运动检测识别

    目录 一、完成摄像头的调用 二、利用python调用opencv库函数对图像进行处理 2.1 图像处理大体流程 2.2 opencv调用函数的参数以及含义 2.2.1 ret, img = cap.read() 读取帧图像 2.2.2 cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 灰度图像 2.2.3 gray_diff_img = cv2.absdiff(gray_img, previous_img) 帧差法 2.2.4 cv2.thre

    2024年02月15日
    浏览(53)
  • 使用OpenCV调用摄像头

    1.创建一个摄像头调用的空项目 2.添加上篇博客里已经改好的属性表——现有属性表 3.返回解决方案资源管理器,在源文件里添加新建项命名为摄像头调用 4.输入以下代码,开始调试,然后就会弹出摄像头 #include opencv2/highgui/highgui.hpp  #include opencv2/imgproc/imgproc.hpp  #include ope

    2024年02月05日
    浏览(49)
  • 如何使用Opencv调用电脑摄像头?

    当我们想要使用opencv对视频图像进行处理时,往往第一步便是需要调用电脑摄像头,下面博主将提供两种版本的代码(含详细注释),帮助大家学习如何使用Opencv调用电脑摄像头进行视频录制并保存: 一、C++版本 1. 从相机中读取视频 2. 从文件中读取视频 3. 保存视频 二、P

    2024年02月11日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包