我是靠谱客的博主 眯眯眼香菇,最近开发中收集的这篇文章主要介绍nanopi(RK3399)使用VideoCapture无法获取USB摄像头1080P视频流的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

系        统:Ubuntu 18.04
语        言:python
问题描述:在使用nanopi(RK3399)时,采用opencv的VideoCapture进行USB摄像头的视频捕捉时,刚开始都可以获取1920×1080分辨率的视频图像,但使用一段时间后,有一天突然获取不了,在调用read函数时均返回False。同时在使用set函数来设置视频格式和分辨率时,返回均为False,说明设置失败。使用guvcview或v4l2-ctl相关命令查看显示有video0和video1(明明我只有一个相机,为什么会有两个video?这个问题我一直每明白),使用cheese可以打开打开1920×1080分辨率的视频图像,但可能格式为YUYV,帧率很低(可能只有5帧),guvcview打开一直失败,报错为获取不到video的控制。尝试多次更换板子和摄像头,但问题依旧。
解决方法:在使用VideoCapture时对底层调用的API进行设置,如下所示,即使用libv4l来获取视频图像
             vs = cv2.VideoCapture(0, apiPreference=cv2.CAP_V4L2)
                    在使用上面这句后,再来使用set设置格式和分辨率都没有问题了。
分析原因:之前我在使用时未设置参数apiPreference,即使用默认参数cv2.CAP_ANY,该参数说明opencv将自动选择并使用第一个可用的底层API。刚开始调用没问题,后来调用失败,有可能是之前系统在自动选择时选对了,后来自动选择时可能因为什么原因选错了(也有可能是其他操作造成的)

参考网页:https://stackoverflow.com/questions/36426826/v4l2-python-streaming-video-mapping-buffers
         https://docs.opencv.org/3.4/d8/dfe/classcv_1_1VideoCapture.html#a85b55cf6a4a50451367ba96b65218ba1
         https://docs.opencv.org/3.4/d4/d15/group__videoio__flags__base.html#ga023786be1ee68a9105bf2e48c700294d

最后

以上就是眯眯眼香菇为你收集整理的nanopi(RK3399)使用VideoCapture无法获取USB摄像头1080P视频流的问题的全部内容,希望文章能够帮你解决nanopi(RK3399)使用VideoCapture无法获取USB摄像头1080P视频流的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部