jetson nano USB摄像头使用openCv打开帧率低的问题

这篇具有很好参考价值的文章主要介绍了jetson nano USB摄像头使用openCv打开帧率低的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


最近玩jetson nano的时候发现openCv打开USB摄像头帧率只有5帧,但是windows下能跑30帧,在网络搜了一下原因发现是摄像头默认读取格式不对,需要改成MJPG格式帧率才能上去,于是使用CSDN上找的代码,但是都不能工作,折腾了好久没搞定,突然想到上 stacoverflow上看看,没想到真的解决了,这里做一下记录。

首先检查摄像头设备是否存在

1.安装工具

sudo apt install v4l-utils 

2.查看摄像头

ls /dev/video* 

3.查看摄像头详细参数,看是否支持

v4l2-ctl --device=/dev/video0 --list-formats-ext

下面是我的摄像头的参数,openCV默认打开的是YUYV格式的,所以帧率低,只有5帧。
jetson nano usb摄像头,opencv,计算机视觉,python
默认打开模式下的帧率
jetson nano usb摄像头,opencv,计算机视觉,python
下面贴出参考网站的连接解决方式

完整代码

给出完整代码,测试能用,最大30帧,因为我的摄像头只能支持30帧

import cv2
import time

width = 640
height = 480

gs_pipeline = f"v4l2src device=/dev/video0 io-mode=2 " \
              f"! image/jpeg, width={width}, height={height}, framerate=30/1, format=MJPG " \
              f"! nvv4l2decoder mjpeg=1 " \
              f"! nvvidconv " \
              f"! video/x-raw, format=BGRx " \
              f"! videoconvert " \
              f"! video/x-raw, format=BGR " \
              f"! appsink drop=1"

cap = cv2.VideoCapture(gs_pipeline, cv2.CAP_GSTREAMER)

# 每0.1S计算一次帧率
t = 0.1
counter = 0
fps = 0
start_time = time.time()

while (True):
    ret, frame = cap.read()
    img = frame.copy()
    # 测帧率
    counter += 1
    if (time.time() - start_time) > t:
        fps = counter / (time.time() - start_time)
        fps = str(fps)
        counter = 0
        start_time = time.time()
    cv2.putText(frame, "FPS {0}".format(fps), (10, 30), 1, 1.5, (255, 0, 255), 2)

    cv2.imshow('frame', frame)
    if cv2.waitKey(1) & 0xFF == 27:
        break
cap.release()
cv2.destroyAllWindows()

这段代码很关键

gs_pipeline = f"v4l2src device=/dev/video0 io-mode=2 " \
              f"! image/jpeg, width={width}, height={height}, framerate=30/1, format=MJPG " \
              f"! nvv4l2decoder mjpeg=1 " \
              f"! nvvidconv " \
              f"! video/x-raw, format=BGRx " \
              f"! videoconvert " \
              f"! video/x-raw, format=BGR " \
              f"! appsink drop=1"

大神给出的解释:

nvvidconv doesn’t support BGR, only BGRx (thus the videoconvert for BGRx->BGR). Caps also lacks a comma. Last, videoconvert only supports system memory, so have nvvidconv to output into system memory rather than NVMM memory.

帧率计算是参考CSDN上的代码
jetson nano usb摄像头,opencv,计算机视觉,python
现在能跑30帧了,大功告成!文章来源地址https://www.toymoban.com/news/detail-739583.html

到了这里,关于jetson nano USB摄像头使用openCv打开帧率低的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • ubuntu利用usb_cam打开摄像头

    想要标定多个相机,首先得把相机打开吧,usb_cam是针对usb摄像头的ros驱动包,简单来说就是得有这个功能包,才能在ros中把摄像头打开。 首先打开终端,输入: 这里melodic应该根据自己Ubuntu系统进行灵活变换,例如我使用的Ubuntu18.04,那么我对应的就是melodic版本。 驱动安装

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

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

    2024年02月16日
    浏览(87)
  • jetson使用opencv和gstreamer调用csi摄像头报错:[ WARN:0] | GStreamer warning: Cannot query video position:

    出现类似的warning基本都是一个问题 VideoCapture加个参数就好了

    2024年02月12日
    浏览(44)
  • Opencv(C++)笔记--打开摄像头、保存摄像头视频

    关键代码语句: ① VideoCapture cam(0); ② cam.read(img); ③ imshow(\\\"cam\\\", img); 关键代码: ①VideoWriter vw ②vw.open(): fourcc指定编码格式(常见编码方式)、 fps指定帧率、 Size指定大小 ③vw.write() 注:在Windows上执行上述代码可能会报以下错误: 解决方法:在输出的网址下载对应版本的库

    2024年02月11日
    浏览(57)
  • opencv在linux上调用usb摄像头进行拍照

    一般video1就是usb摄像头

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

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

    2024年02月13日
    浏览(47)
  • 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日
    浏览(48)
  • 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日
    浏览(53)
  • 解决OpenCV捕捉USB摄像头时抓帧失败的问题

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

    2024年02月04日
    浏览(41)
  • 通过Opencv打开指定摄像头的方法

    我们使用Opencv打开摄像头,一般是使用VideoCapture的open接口。 open接口要传入一个标识符,如果只有1个摄像机,那么就是0,如果系统中有多个摄像机,那么只要将其向上增加即可。 系统: 银河麒麟linux系统 问题: 现在我插入了一个双目摄像头(两个USB线,一个彩色,一个红

    2024年02月13日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包