android opencv卡顿,Opencv读取摄像头卡顿

Opencv读取摄像头卡顿

开发环境:Win10系统,罗技HD1080p高清摄像头,UE4_21,VS2017后端

开发原理:多线程中经过OpenCV对摄像头进行高清采集(1920*1080),而后显示到UMG中。多线程

遇到问题:在2k采集模式下,画面卡顿厉害。ide

猜测1:是否是卡在采集后的图像cv::Mat往UTexture2D*填入时的问题,毕竟1920*1080个像素的拷贝。编码

实践:减少采集分辨率(640*480),而后cv::resize到1920*1080,再拷贝到1920*1080的UTexture2D* 中spa

结果:视频很是流畅,那么能够断言,跟图像据拷贝到UTexture2D*中这一步,就不要紧了.net

猜测2:是否是摄像头采集的问题。有大佬说了,不少摄像头,在高分辨率的状况下都不到15帧,以MJPG格式解码能达到30帧。线程

实践:这一步固然去网上搜刮了。code

原理篇参阅Jetson TX1开发笔记(六):V4L2+OpenCV3.1以MJPG格式读取USB摄像头图像并实时显示视频

大体意思是这样的,该摄像头的YUV2输出格式只有一种640 x 480分辨率,而输出格式为MJPG有多种分辨率,若是想实现高清采集,须要经过MJPG格式进行采集。

那么,怎么设置采集模式呢?

毫无疑问,确定在设置里面。看看网上大佬是怎么表演的吧。

Python opencv 调用摄像头时设置以MJPG等编码格式获取视频

(下面引用上篇博客,转C++实现)

使用opencv读取和设置摄像头或视频属性代码以下。

cv::VideoCapture cap;

cap.set(proID, value)

cap.get(proID)

其中,propId 的值为 0 - 18,19个值并非每一个均可以进行修改,每一个值对应的属性以及功能以下以下:

参数

功能/意义

CV_CAP_PROP_POS_MSEC

0

视频文件的当前位置(以毫秒为单位)或视频捕获时间戳

CV_CAP_PROP_POS_FRAMES

1

基于0的索引将被解码/捕获下一帧

CV_CAP_PROP_POS_AVI_RATIO

2

视频文件相对位置:0 - 电影的开始,电影的1 - 结束

CV_CAP_PROP_FRAME_WIDTH

3

视频里每一帧的宽

CV_CAP_PROP_FRAME_HEIGHT

4

视频里每一帧的高

CV_CAP_PROP_FPS

5

视频的帧速

CV_CAP_PROP_FOURCC

6

4个字符表示的视频编码器格式

CV_CAP_PROP_FRAME_COUNT

7

视频的帧数

CV_CAP_PROP_FORMAT

8

byretrieve()返回的Mat对象的格式

CV_CAP_PROP_MODE

9

指示当前捕获模式的后端特定值

CV_CAP_PROP_BRIGHTNESS

10

图像的亮度(仅适用于相机)

CV_CAP_PROP_CONTRAST

11

图像对比度(仅适用于相机)

CV_CAP_PROP_SATURATION

12

图像的饱和度(仅适用于相机)

CV_CAP_PROP_HUE

13

图像的色相(仅适用于相机)

CV_CAP_PROP_GAIN

14

图像的增益(仅适用于相机)

CV_CAP_PROP_EXPOSURE

15

曝光(仅适用于相机)

CV_CAP_PROP_CONVERT_RGB

16

表示图像是否应转换为RGB的布尔标志

CV_CAP_PROP_WHITE_BALANCE

17

目前不支持

CV_CAP_PROP_RECTIFICATION

18

立体摄像机的整流标志(注意:只有当前支持DC1394 v 2.x后端)

//1.打开摄像机设备(默认第一个)

cv::VideoCapture cap= cv::VideoCapture(0);

//2.必定要先设置采集格式!!!

cap.set(CV_CAP_PROP_FOURCC, cv::VideoWriter::fourcc('M', 'J', 'P', 'G'));

//3.而后再设置高清采集分辨率

cap.set(CV_CAP_PROP_FRAME_WIDTH, 1920);

cap.set(CV_CAP_PROP_FRAME_HEIGHT, 1080);

结果:流畅地一笔,本身去感觉

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值