专栏首页Jack-CuiJetson TX1开发笔记(六):V4L2+OpenCV3.1以MJPG格式读取USB摄像头图像并实时显示

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

嵌入式平台(Target): Jeston TX1 OpenCV: OpenCV3.1 摄像头: USB 800W摄像头

1 前言

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

    从上两幅图可以看出,该摄像头的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:

2.2 OpenCV图像解码

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

    代码如下:

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_PATH
export 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:RecordexUSA
Bus info:usb-tegra-xhci-3.3
Driver Version:3.10.96
Support format:
    1.YUV 4:2:2 (YUYV)
    2.MJPEG
Default rec:
    left:0
    top:0
    width:1920
    height:1080
Current data format information:
    width:1920
    height:1080
Used 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

5 总结

    如有更好的方法欢迎留言讨论,谢谢!

PS: 如果觉得本篇本章对您有所帮助,欢迎关注、评论、顶!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Jetson TX1开发笔记(五):TX1使用OpenCV3.1实时采集视频图像

    嵌入式平台(Target): Jeston TX1 OpenCV: OpenCV3.1 摄像头: USB 800W摄像头 1 前言     Jetpa...

    Jack_Cui
  • 83. Remove Duplicates from Sorted List(Linked List-Easy)

    Given a sorted linked list, delete all duplicates such that each element appear ...

    Jack_Cui
  • Python3《机器学习实战》学习笔记(八):支持向量机原理篇之手撕线性SVM

    版权声明:本文为博主原创文章,未经博主允许不得转载。个人网站:http://cuijiahua.com。 ...

    Jack_Cui
  • 关于 MOM——你有哪些疑问?

    当前并不是所有制造企业都有必要实施 MOM 系统。对企业来说,保持竞争力和持续的业务增长才是最重要的。工业物联网、智能制造应该由商业环境来驱动,灵活性、质量和成...

    李英杰同学
  • Shell学习笔记

    1. 变量 声明变量 以 a-zA-Z 开头,不包含特殊字符 等号两边没有空格 不与保留字符重名 PATH="/user/yihui" 使用 变量前加 $ 符号...

    一灰灰blog
  • macOS Sierra安装Apache2.4+PHP7.0+MySQL5.7.16

    Mac系统上虽然自带PHP和Apache,但是有时不是我们想要的版本呢。今天我们就在macOS Sierra(10.12.1)上安装比较新的版本的PHP版本,也...

    lizelu
  • springMvc4+hibernate4的一个奇葩的网上众说纷纭的错误

    springMvc4+hibernate4项目运行报错如下: org.hibernate.HibernateException: Could not obtai...

    小柒2012
  • 【POJ 1389】Area of Simple Polygons(线段树+扫描线,矩形并面积)

    要么在相差大于1的两点间加入一个值,要么就让左右端点为l,r的线段树节点表示到x[l]到x[r+1]的区间。

    饶文津
  • 指定网卡进行ping操作

    墨文
  • 今日 Paper | 可视问答模型;神经风格差异转移;图像压缩系统 ;K-SVD图像去噪等

    论文名称:Accuracy vs. Complexity: A Trade-off in Visual Question Answering Models

    AI科技评论

扫码关注云+社区

领取腾讯云代金券