OpenCV调用USB摄像头/相机,并解决1080p下的延迟卡顿问题(附Python代码)

这篇具有很好参考价值的文章主要介绍了OpenCV调用USB摄像头/相机,并解决1080p下的延迟卡顿问题(附Python代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 加载摄像头

首先直接放上一段加载USB相机的例程供参考

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time     : 2023/5/16 10:22
# @Author   : Chenan_Wang
# @File     : cv_test.py
# @Project  : pad_det 
# @Software : PyCharm

import cv2 as cv

if __name__ == "__main__":
    cap = cv.VideoCapture()
    cap.open(1, cv.CAP_DSHOW)       # 我这里0为电脑自带摄像头,1为外接相机

    while True:
        if not cap.isOpened():
            print('can not open camera')
            break
        ret, frame = cap.read()     # 读取图像
        if not ret:                 # 图像读取失败则直接进入下一次循环
            continue

        cv.namedWindow("cv_test")
        cv.imshow('cv_test', frame)

        my_key = cv.waitKey(1)
        # 按q退出循环,0xFF是为了排除一些功能键对q的ASCII码的影响
        if my_key & 0xFF == ord('q'):
            break

    #释放资源
    cap.release()
    cv.destroyAllWindows()

2. 高分辨率视频流延迟问题

摄像头成功加载出来,但是默认分辨率太低(我的相机支持的是1080p),通过如下代码设置分辨率和帧率:

cap.set(cv.CAP_PROP_FRAME_WIDTH, 1920)
cap.set(cv.CAP_PROP_FRAME_HEIGHT, 1080)
cap.set(cv.CAP_PROP_FPS, 30)

此时分辨率是1080p了,但是延迟严重,在网上找了一堆方法,几乎都不可用!!!

  • 设置格式为MJPG:
cap.set(cv.CAP_PROP_FOURCC, cv.VideoWriter_fourcc('M', 'J', 'P', 'G'))

==> 无法解决问题,依然有延迟

  • 开启多线程接受图像信息,依然无法解决问题,延迟依旧

  • 发现修改为低分辨率的时候卡顿会降低,推测可能是由于分辨率太高导致的延迟现象,但是理论上来说这点算力对计算机是没影响的,结果在修改分辨率的时候突然问题就解决了 ↓


3. 延迟解决方案

设置分辨率的时候不要设置为1920x1080,改成1900x1080!,实际成像依然会匹配相机的1920x1080,保存的时候也是1920x1080

而且画面会和之前cv默认分辨率的帧率一样,及其流畅,几乎无延迟

具体啥愿意就不知道了,希望有大佬可以解答一下~

下面放上完整代码供参考:文章来源地址https://www.toymoban.com/news/detail-484569.html

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time     : 2023/5/16 10:22
# @Author   : Chenan_Wang
# @File     : cv_test.py
# @Project  : pad_det 
# @Software : PyCharm

import cv2 as cv

if __name__ == "__main__":
    cap = cv.VideoCapture()
    cap.open(1, cv.CAP_DSHOW)       # 我这里0为电脑自带摄像头,1为外接相机
    cap.set(cv.CAP_PROP_FOURCC, cv.VideoWriter_fourcc('M', 'J', 'P', 'G'))
    cap.set(cv.CAP_PROP_FRAME_WIDTH, 1900)      # 解决问题的关键!!!
    cap.set(cv.CAP_PROP_FRAME_HEIGHT, 1080)
    cap.set(cv.CAP_PROP_FPS, 30)

    while True:
        if not cap.isOpened():
            print('can not open camera')
            break
        ret, frame = cap.read()     # 读取图像
        if not ret:                 # 图像读取失败则直接进入下一次循环
            continue
        cv.namedWindow("cv_test")
        cv.imshow('cv_test', frame)
        my_key = cv.waitKey(1)
        # 按q退出循环,0xFF是为了排除一些功能键对q的ASCII码的影响
        if my_key & 0xFF == ord('q'):
            break

    #释放资源
    cap.release()
    cv.destroyAllWindows()

到了这里,关于OpenCV调用USB摄像头/相机,并解决1080p下的延迟卡顿问题(附Python代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Python OpenCV 读取USB摄像头报错问题解决

    Traceback (most recent call last):   File \\\"G:Python图像识别相关学习视频人体姿势检测.py\\\", line 32, in module     cv2.imshow(\\\'image_title\\\',img) cv2.error: OpenCV(4.6.0) D:aopencv-pythonopencv-pythonopencvmoduleshighguisrcwindow.cpp:967: error: (-215:Assertion failed) size.width0 size.height0 in function \\\'cv::imshow\\\' Python 3.8.10 o

    2024年02月05日
    浏览(34)
  • 解决OpenCV捕捉USB摄像头时抓帧失败的问题

    笔记本上外接了一个USB相机,用OpenCV打开摄像头捕捉图像结果报错如下: 最开始的代码: videoio(MSMF): can’t grab frame. Error: -2147024809这个报错显示为抓帧失败,以前从来没遇到过这个问题,程序是最简化的程序了肯定不会有问题,一度怀疑是相机不能用。 其实这个问题只与U

    2024年02月04日
    浏览(32)
  • python opencv 调用摄像头失败问题的解决 Windows

    省流: 内含 Python Opencv 双目相机拍照代码(手动 or 自动),可自取; 如果你的 cv2.VideoCapture() 函数卡住但不报错,打开 Windows “相机”应用可以正常看到摄像头画面,且能够正常用 cv2.imshow() 打开图像,请继续阅读。 这个学期选修了方璐老师的媒体与认知课程,期末的 Fin

    2024年02月05日
    浏览(36)
  • 解决OpenCV使用USB摄像头获取高分辨率视频低帧率、卡、果冻画面的问题

    最近制作移动设备,需要安置多个usb摄像头到电脑,踩了几个坑,记录一下解决方案。 不能使用分线器插多个usb摄像头,同一时间只能加载一个。 usb摄像头调高分辨率时,非常卡顿,视频画面像果冻一样,及不流畅 第二个情况具体描述: 摄像头支持1920*1080  60fps,opencv在

    2024年02月16日
    浏览(56)
  • 树莓派调用usb摄像头(三)

    因为我的摄像头是usb 的所以使用一下命令查看摄像头 输入以下命令,开启摄像头 sudo apt-get install cmake libjpeg8-dev 提示:Package \\\'libjpeg8-dev\\\' has no installation candidate sudo apt-get install libjpeg62-turbo=1:1.5.2-2+deb10u1 (2) 打开motion daemon守护进程,使得motion可以一直在后台运行。  sudo nano /e

    2024年01月17日
    浏览(37)
  • Lattice FPGA解码MIPI视频,IMX219摄像头4Line 1080P采集USB3.0输出,提供工程源码硬件原理图PCB和技术支持

    FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了,MIPI解码难度之高,令无数英雄竞折腰,以至于Xilinx官方不得不推出专用的IP核供开发者使用,不然太高端的操作直接吓退一大批FPGA开发者,就没人玩儿了。 本设计基于Lattice的LCMXO3LF-6900C-5BG256C开发板,采

    2024年02月02日
    浏览(41)
  • yolov5傻瓜式调用usb摄像头

    环境:yolov5 5.0 电脑:戴尔笔记本 当你用requirement下载好yolov5的对应的包后就需要使用detect去检测图片了。 在5.0版本中,detect要修改的部分主要是以下部分 其中第一条是你的模型可以自己训练也可以用它本身自带的。 我们主要看第二条。 将default改为’0’使用摄像头。 一般

    2024年02月12日
    浏览(29)
  • ubuntu20.04下的USB摄像头使用与标定(单目相机)一.使用

    A.查找摄像头接口 B.在该路径下修改launch文件,换成你自己的摄像头接口 C.运行摄像头节点(此时就能看到画面了) ⭐可能会出现的错误 1.终端会warning是因为还没有进行摄像头标定,后续会进行讲解 2.若用的是虚拟机但发出了error,看看你的usb是接入3.0还是2.0处,然后在如下

    2024年02月04日
    浏览(116)
  • Python OpenCV读取并显示USB UVC摄像头

    1. 安装Python, 略。 2. 安装 OpenCV:         3. 预览摄像头画面脚本:

    2024年02月13日
    浏览(30)
  • RK3588安装Qt+opencv+采集USB摄像头画面

    Qt:5.12.8 opencv:3.4.14 qt安装 ---------------------------------------------------------------------------------- 因为使用官网下载的版本始终安装失败,所以我可以直接使用命令行进行下载安装: 1:首先先将ubuntu的软件更新,并更新镜像源 sudo apt-get update sudo apt-get upgrade 2:使用如下步骤安装Qt

    2023年04月10日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包