JetsonTX1开发中V4L2+OpenCV3.1以MJPG格式读取USB摄像头图像并实时显示的示例分析

这篇文章主要介绍了Jetson TX1开发中V4L2+OpenCV3.1以MJPG格式读取USB摄像头图像并实时显示的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

为汝南等地区用户提供了全套网页设计制作服务,及汝南网站建设行业解决方案。主营业务为网站设计制作、做网站、汝南网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

1 前言

    博主手中的800W高清摄像头:

Jetson TX1开发中V4L2+OpenCV3.1以MJPG格式读取USB摄像头图像并实时显示的示例分析

Jetson TX1开发中V4L2+OpenCV3.1以MJPG格式读取USB摄像头图像并实时显示的示例分析

    从上两幅图可以看出,该摄像头的YUV2输出格式只有一种640 x 480分辨率,而输出格式为MJPG有多种分辨率,如果想实现高清采集,需要通过MJPG格式进行采集。

    摄像头的输出格式可以是YUY2、MJPG等。对于输出格式为YUV2的摄像头,可以使用上个笔记中的nvcamerasrc,直接调用的是Gstreamer进行视频图像采集。而对于输出格式MJPG的摄像头,由于博主对Gstreamer不太了解,因此决定使用V4L2+OpenCV3.1进行图像采集。

2 预备知识

2.1 V4L2基础

    这部分的内容,可以看这位大牛的博客:http://www.cnblogs.com/surpassal/archive/2012/12/19/zed_webcam_lab1.html

    由于,采用MJPG采集格式,因此在V4L2设备初始化的时候,摄像头帧格式的pixelformat需要设置为V4L2_PIX_FMT_MJPEG:

Jetson TX1开发中V4L2+OpenCV3.1以MJPG格式读取USB摄像头图像并实时显示的示例分析

2.2 OpenCV图像解码

    可以使用cvDecodeImage进行图像解码,buf是保存图像的buffer。iscolor参数为0,解码成灰度图,参数为1,解码成彩色图。此处iscolor参数,我们设置为1。

Jetson TX1开发中V4L2+OpenCV3.1以MJPG格式读取USB摄像头图像并实时显示的示例分析

    代码如下:

Jetson TX1开发中V4L2+OpenCV3.1以MJPG格式读取USB摄像头图像并实时显示的示例分析

3 编译程序

3.1 整体代码

    由于代码较长,贴出来影响美观。可以在我的Github下载整体代码:

    URL:https://github.com/Jack-Cherish/VideoCapture/blob/master/capture.cpp

    欢迎follow、star!

3.2 编译及运行

    运行环境需要配置好OpenCV3.1,配置教程详见:http://blog.csdn.net/c406495762/article/details/72302980

    在~/.bashrc最后添加环境变量(我的OpenCV3.1安装在了/home/ubuntu/opencv-3.1.0下,这里需要改为自己的OpenCV3.1的路径):

export LD_LIBRARY_PATH=/home/ubuntu/opencv-3.1.0/lib:$LD_LIBRARY_PATHexport PKG_CONFIG_PATH=/home/ubuntu/opencv-3.1.0/lib/pkgconfig:$PKG_CONFIG_PATH

    使添加的环境变量生效:

source ~/.bashrc

    将程序拷贝到TX1中,使用使用如下指令编译(我的OpenCV3.1安装在了/home/ubuntu/opencv-3.1.0下,这里需要 改为自己的OpenCV3.1的路径) :

g++ -o capture -I /home/ubuntu/opencv-3.1.0/include -O2 -g -Wall capture.cpp -L /home/ubuntu/opencv-3.1.0/lib -lopencv_core -lopencv_imgproc -l opencv_flann -l opencv_imgcodecs -lopencv_videoio -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_objdetect -lopencv_photo -lopencv_features2d -lopencv_calib3d -lopencv_stitching -lopencv_videostab -lopencv_shape -lopencv_cudaobjdetect -lopencv_cudawarping -lopencv_cudaimgproc

4 运行结果

video dev : /dev/video0
Driver Name:uvcvideo
Card Name:RecordexUSABus info:usb-tegra-xhci-3.3Driver Version:3.10.96Support format:1.YUV 4:2:2 (YUYV)2.MJPEGDefault rec:
    left:0top:0width:1920height:1080Current data format information:
    width:1920height:1080Used time is 185.864 ms
Used time is 56.2118 ms
Used time is 17.0305 ms
Used time is 14.5383 ms
Used time is 43.1591 ms
Used time is 32.4903 ms
Used time is 28.6098 ms
Used time is 20.398 ms
Used time is 33.6233 ms
Used time is 23.8306 ms

感谢你能够认真阅读完这篇文章,希望小编分享的“Jetson TX1开发中V4L2+OpenCV3.1以MJPG格式读取USB摄像头图像并实时显示的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!


当前文章:JetsonTX1开发中V4L2+OpenCV3.1以MJPG格式读取USB摄像头图像并实时显示的示例分析
文章URL:http://scyanting.com/article/ppgcph.html