Jetson TX1开发笔记(六):V4L2+OpenCV3.1以MJPG格式读取USB摄像头图像并实时显示
2017-05-25 17:40
926 查看
转载请注明作者和出处: http://blog.csdn.net/c406495762
嵌入式平台(Target): Jeston TX1
OpenCV: OpenCV3.1
摄像头: USB 800W摄像头
前言
预备知识
1 V4L2基础
2 OpenCV图像解码
编译程序
1 整体代码
2 编译及运行
运行结果
总结
从上两幅图可以看出,该摄像头的YUV2输出格式只有一种640 x 480分辨率,而输出格式为MJPG有多种分辨率,如果想实现高清采集,需要通过MJPG格式进行采集。
摄像头的输出格式可以是YUY2、MJPG等。对于输出格式为YUV2的摄像头,可以使用上个笔记中的nvcamerasrc,直接调用的是Gstreamer进行视频图像采集。而对于输出格式MJPG的摄像头,由于博主对Gstreamer不太了解,因此决定使用V4L2+OpenCV3.1进行图像采集。
由于,采用MJPG采集格式,因此在V4L2设备初始化的时候,摄像头帧格式的pixelformat需要设置为V4L2_PIX_FMT_MJPEG:
代码如下:
URL:https://github.com/Jack-Cherish/VideoCapture/blob/master/capture.cpp
欢迎follow、star!
在~/.bashrc最后添加环境变量(我的OpenCV3.1安装在了/home/ubuntu/opencv-3.1.0下,这里需要改为自己的OpenCV3.1的路径):
使添加的环境变量生效:
将程序拷贝到TX1中,使用使用如下指令编译(我的OpenCV3.1安装在了/home/ubuntu/opencv-3.1.0下,这里需要 改为自己的OpenCV3.1的路径) :
PS: 如果觉得本篇本章对您有所帮助,欢迎关注、评论、顶!
嵌入式平台(Target): Jeston TX1
OpenCV: OpenCV3.1
摄像头: USB 800W摄像头
前言
预备知识
1 V4L2基础
2 OpenCV图像解码
编译程序
1 整体代码
2 编译及运行
运行结果
总结
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: 如果觉得本篇本章对您有所帮助,欢迎关注、评论、顶!
相关文章推荐
- Jetson TX1开发笔记(五):TX1使用OpenCV3.1实时采集视频图像
- NVIDIA Jetson TX1 系列开发教程之九:USB摄像头MJPEG格式图像采集
- Linux环境下使用V4L2+opencv以MJPEG格式读取USB摄像头并实时显示
- Linux环境下使用V4L2+opencv以MJPEG格式读取USB摄像头并实时显示
- 笔记:OpenCV 读取摄像头并显示图像的R、G、B三个通道的直方图
- Linux环境下使用V4L2+opencv以MJPEG格式读取USB摄像头并实时显示
- Python OpenCV学习笔记之:图像读取,显示及保存
- 【OpenCV学习笔记】三、图像读取、显示及保存
- OpenCV读取摄像头显示原图像和RGB三通道直方图
- OpenCV中读取RGB格式图像转成HSV格式图像显示
- 双目视觉学习笔记(一)--qtcreator下使用opencv读取并存储双摄像头图像
- OpenCV入门_学习笔记_读取、显示、处理图像
- opencv笔记8----从大恒工业摄像头读取图像
- 在MFC中显示OpenCV的Mat格式图像和打开摄像头
- OpenCV学习笔记 利用MFC的Picture控件显示图像+播放视频和捕获摄像头画面 .
- OpenCV中读取RGB格式图像转成HSV格式图像显示
- OpenCV(C++接口)学习笔记1-图像读取、显示、保存
- OpenCV学习笔记(9)利用MFC的Picture控件显示图像+播放视频和捕获摄像头画面
- Python下opencv使用笔记(一)(图像简单读取、显示与储存)
- OpenCV2学习笔记04:图像的读取与显示