OpenCV能以MJPEG的格式js读取json格式数据摄像头数据吗

Linux环境下使用V4L2+opencv以MJPEG格式读取USB摄像头并实时显示
转眼间,V4L2已经搞了很长时间,从最开始的一窍不通,到后来的渐渐熟悉,从最开始照猫画虎的使用YUYV格式之间转换,到后来使用MJPEG格式读取,中间颇有周折。趁任务完成间隙,来简单总结下V4L2的使用。(文章只主要写了过程,完整程序已经附在最后)
有读者要问,opencv已经有相关的读取摄像头的函数,为什么要使用V4L2这么麻烦呢。其实主要是因为后面要将程序移植到板子上,而在板子上不能直接使用opencv中读取摄像头的函数的,所以需要借助V4L2来实现读取视频的功能。还有,既然YUYV格式这么简单(见文章末尾附的大神的博客),为什么要用MJPEG格式呢?这一点主要是考虑到YUYV数据量较大,影响摄像头读取速度,也会影响到后面都视频数据传输的扩展。
V4L2主要应用于linux读取USB摄像头,有关它的介绍网上有很多资料,这里不再赘述。结合主题,本文主要讲述如何使用MJPEG格式读取并将其转换为OpenCV中的IplImage格式,以方便进行图像处理,最后以视频的形式进行实时显示。截至到今天晚上,已经使得程序能够实时以MJPEG格式读取并显示,图像分辨率为,速度100ms每帧。由于项目需要,所以尽可能使用较大分辨率,导致速度有点慢,如果使用普通的640*480,速度比较会比较快。
有点啰嗦,下面进入主题:使用MJPEG格式读取视频,并实时显示。整个过程主要分为以下几个步骤:
1.&&&&&&打开视频设备文件,并进行参数初始化,设置采集分辨率、格式等;
该步骤中主要使用函数:
Open(“/dev/video0”,O_RDWR);//打开USB摄像头
ioctl(fd,VIDIOC_QUERYCAP,&cap);//查询设备的信息
ioctl(fd,VIDIOC_S_STD,&fmt);//设置视频的格式
2.&&&&&&申请帧缓冲区,并将其映射到用户空间;
ioctl(fd,VIDIOC_REQBUFS,&req);//申请缓冲帧
malloc(req.count*sizeof(*buffer));
ioctl(fd,VIDIOC_QUERYBUF,&buf);//将申请到的帧缓冲映射到用户空间
3.&&&&&&将申请到的帧缓冲区在视频采集输入队列排队,并启动视频采集;
ioctl(fd,VIDIOC_QBUF,&buf);//将申请到的帧缓冲全部加入队列
ioctl(fd,VIDIOC_STREAMON,&byte);//开始采集
4.&&&&&&应用程序从视频采集输入队列取出帧缓冲区,将其转换为OpenCV中的通用数据格式,然后显示,之后重新放入视频采集队列,循环该过程;
ioctl(fd,VIDIOC_DQBUF,&buf);//取缓冲帧
CvMatcvmat=cvMat(IMAGEHEIGHT,IMAGEWIDTH,CV_8UC3,(void*)buffer);//将帧内容赋值给CvMat格式的数据
IplImage img =cvDecodeImage(&cvmat,1);//解码,这一步将数据转换为IplImage格式
cvShowImage(“one”,img);//显示图像
cvReleaseImage(&img);//释放图像空间
ioctl(fd,VIDIOC_QBUF,&buf);//将缓冲重新加入队尾
循环上面的步骤,就可以形成视频啦
5.&&&&&&停止视频采集,关闭设备文件。
ioctl(fd,VIDIOC_STREAMOFF,&byte);
close(fd);
由于时间关系,上面只是简单介绍了一下整个过程,相关函数的使用和函数中的结构体参数网上都有很多资料可供参考,当然也可以看下官方给的API手册,讲的很详细,但是有点长,且是英文的。下面列出我学习时找到的一些资料,
最后附上我自己的程序,目前程序能够实现基本的功能,但是本人还想进一步优化以提高效率,有其他好的想法的朋友可以与我联系。Mail:
一个大神的博客,最开始我就是按照这个学习的
V4L2的官方手册:
我自己的程序:
&百度网盘的链接:&链接:/s/1dDfMPqD 密码:5ahu&
程序是在linux环境下使用QT编译的,需要自己安装OPENCV,并在.pro文件中配置,我的.pro文件中已经将相关路径写入,读者使用时可以按照自己安装OPENCV的路径修改。
最后,加上效果图展示,由于分辨率较大,屏幕不能显示完整窗口:
看过本文的人也看了:
我要留言技术领域:
取消收藏确定要取消收藏吗?
删除图谱提示你保存在该图谱下的知识内容也会被删除,建议你先将内容移到其他图谱中。你确定要删除知识图谱及其内容吗?
删除节点提示无法删除该知识节点,因该节点下仍保存有相关知识内容!
删除节点提示你确定要删除该知识节点吗?opencv吧-百度贴吧--开源让科技更美好--OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数
签到排名:今日本吧第个签到,
本吧因你更精彩,明天继续来努力!
本吧排名:
本吧签到人数:39
可签7级以上的吧50个
本月漏签0次!
成为超级会员,赠送8张补签卡
连续签到:天&&累计签到:天
超级会员单次开通12个月以上,赠送连续签到卡3张
开源让科技更美好
为了更好的查看教程,本人用word编辑,分享到云盘
百度搜索,OpenCV2/3高清入门视频教程,新手必选
大佬大佬们,win7 64位怎么配置vs呀,本人小白,还望大佬们指导指导,感激不尽呀
这个软件怎么配置,,配置时候,一直提示无法打开源文件
作者:KBY 近段时间微软刚刚更新了 Visual Studio 2015,就下了一个玩。但是以前的opencv就需要重新配置使用了,索性连opencv也使用最新版的3.0了。由
辽宁舰镇楼
在opencv中,求x方向的导数用到的sobel内核是: (截图来自opencv官方文档) 在matlab中,求x方向的导数用到
正样本镇楼!
今天刚答辩完,感觉还不错,不能让这个项目就这么没了,所以拿出来和大家分享一下。项目有一些不完善的地方,也希望大家拿到源码后能自己修改成更好的
(银河镇楼) 视频传不上来=。=
我写加载一张图片,生成没错误,可是运行的时候就报这个错误,然后网上说要下一个c++程序集,我也
1.识别出货架层数 2.识别出货架的陈列面数(如同一层横向连续摆放六个产品,则为6) 3.识别货架上摆放
想问下在VS2013里用C#编的WPF文件会调用图像信息了,之后需要加图像处理和模式识别。可以使用opencv吗?还
求解我在用OPENCV3在VS2015版本下做人脸检测的时候 为什么弹不出摄像头的框框 我用的是上面第一个C++程序
手上有一个HOG的图像识别的MATLAB代码 ,也有readme,应该可以直接运行。但英文太差不会调试,请个大神帮
看吧里边好像有些人的环境配置有问题,一直报错,吓得我赶紧混点经验压压惊
#include&opencv2/highgui/highgui.hpp& #include&opencv2/imgproc/imgproc.hpp& int main() { Mat srcImage = imre
#include&opencv2\opencv.hpp& int main() { Mat srcImage = imread(&ylsb.jpg&); // 载入图片 imshow(&quo
include&opencv2/highgui/highgui.hpp& #include&opencv2/imgproc/imgproc.hpp& using n
opencv 标定产生的内外参文件,intrinsics.yml,extrinsics.yml是在30副640*480的图片基础上标定得来的,如果测距直
这是用matlab做的到这里画了极线后面校正就进行不下去了 能否用opencv做极线校正?
有做相机单目标定的吗,可以加个QQ互相交流一下。QQ:
之前一直使用的是opencv自带的haar检测xml。但是想把正脸的haarcascade_frontalface_alt.xml和侧脸 的haarcascade_profilef
我刚刚百度好像有人和我遇到了同样的问题,但是他的帖子被删了。 情况是这样的:运行程序----图片正
求大佬帮忙 win7+vs2015+opencv3.1
我用DirectX修复过了 syswow64文件夹中也有msvcp140d.dll 可是 就是没办法启动 WIN7+VS2015+OPENCV3.1
树莓派编译opencv,用了WHIT_FFMPEG=OFF之后编译成功,然后使用了教程,出现了这种问题,cvtColor错误,请问怎
如何获取某点的灰度值
cv2.VideoCapture(0).isopened()的值为false 摄像头获取不了 但是cheese可以打开摄像头
那位大佬能帮忙解答一下,我最近在做边缘检测,在滤波处理噪声时感觉用高斯滤波控制的不好,到底要
本人纯小白,用C语言玩过单片机,除了C不会别的。我听说opencv可以做机器视觉,所以我想问下C语言搭配op
为了方便班级管理,模仿答题卡自制了如图所示的填涂卡。其中每一个方块代表一个学生的学号。想请教
求大神帮我一个小忙: 我只有两点特别简单的需求: 1.给我一个配置好opencv的linux虚拟机 2.我有一个只包
OpenCV小白求教,我按网上的教程来的,配置完毕后准备测试,结果却显示不出图片,如图所示。只有这个
求各位大佬给个opencv的安装包跟教程
求大神指点一二,不胜感激。。之前没做过图像处理,有点懵。。。感谢
请问pi3编译opencv在41%的时候出现了编译cap_ffmpeg.cpp不通过的情况,打架有谁知道是怎么一回事,感激不尽
求助!我用的vs2013配置的opencv3.1然后运行一个显示图片的程序,显示完之后电脑就蓝屏了,有没有遇到过
你可能感兴趣的吧...
发贴红色标题
签到六倍经验
兑换本吧会员
赠送补签卡1张,获得
助攻总额: 43W
贴吧热议榜
发表后自动分享本贴
使用签名档&学生一枚,努力做优秀的程序员!
2017年三月 &(1)
2017年二月 &(1)
2016年五月 &(1)
2016年四月 &(2)
2016年二月 &(1)
2016年一月 &(2)
2015年十二月 &(1)
2015年十月 &(1)
2015年八月 &(2)
2015年七月 &(1)
2015年六月 &(1)
2015年五月 &(2)
本站主机提供商,稳定快速,性价比高!您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
基于opencv目标跟踪与检测课程设计.doc 48页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:150 &&
你可能关注的文档:
··········
··········
课程设计Ⅰ设计报告
目:基于Opencv运动目标跟踪与检测
专业班级:
计算机软件2班
指导教师:
设计时间:
指导老师评语:
本文先介绍一种开放源代码的计算机视觉类库OpenCV,主要阐述该类库的特点及其结构,然后介绍本人学习opencv一些基本功能的实现以及结果。最后通过“检测一个视频中的运动物体”这一实例探讨了使用OpenCV进行编程的方法。
1.1 目标跟踪与检测课程设计目的 4
1.2 目标跟踪与检测设计任务与要求 4
1.3 目标跟踪与检测的开发环境 4
2 目标跟踪与检测系统设计的基本概念与原理 4
2.1 目标跟踪与检测的基本概念与知识 4
2.2目标跟踪与检测系统设计实现平台的搭建 12
2.1与目标跟踪与检测相关的一些基本功能 18
3 基于opencv运动目标跟踪与检测系统实现的详细说明 33
3.1 一般目标跟踪的实现 33
3.2 本文的检测算法 34
3.3 Camshift算法原理及其Opencv实现 35
3.4目标跟踪与检测系统的运行结果 39
4 目标跟踪与检测的课程设计总结 44
1.1目标跟踪与检测课程设计目的
1.通过实验了解opencv运动物体跟踪的数据结构、函数以及基本框架;
2.通过实验提高对于图像与视频的认识;
3.通过学习,掌握基本的opencv图像与视频的知识。
4.通过实验将理论和实践联系起来,提升对于理论知识的认识;
1.2目标跟踪与检测设计任务与要求
1.通过学习做该课程设计,掌握一些opencv的基本知识以及图像与视频的知识。
2.调用基于intel 的开源视觉库opencv,实现视频或者摄像头的监控;
3.编程实现对进入视觉范围内的运动物体实施监测;
1.3 目标跟踪与检测Opencv开发环境
一台pc机,Microsoft Visual C++ 6.0
2 系统设计的基本概念与原理
2.1 目标跟踪与检测基本概念与知识
2.1.1. OpenCV简介
开放源代码的计算机视觉类库OpenCV (Intel Open Source Computer Vision Library)由英特尔公司开发.它是一套可免费获得的由一些C函数和C++类所组成的库,用来实现一些常用的图像处理及计算机视觉算法。OpenCV主要用于对图像进行一些高级处理,比如说特征检测与跟踪、运动分析、目标分割与识别以及3D重建等。
它有以下特点; 开放C源码,基于Intel处理器指令集开发的优化代码,统一的结构和功能定义,强大的图像和矩阵运算能力,方便灵活的用户接口,同时支持WINDOWS、LINUX平台等。
(1) OpenVC的数据结构
OpenCV提供了多种基本数据类型虽然这些数据类型在C语言中不是基本类型但结构都很简单,可将它们作为原子类型penCV函数库进行编程的过程中,常常会需要用到这些结构类型,只有真正了解这些结构才能够很好地利用OpenCV函数库来解决问题
基础的数据类型包括:CvPoint基于二维整形坐标轴的点.CvSize矩形框大小。CvRect矩形框的偏移和大小,以像素为精度,CvMat多通道矩阵等。
OpenCV提供了多种基本数据类型虽然这些数据类型在C语言中不是基本类型但结构都很简单,可将它们作为原子类型penCV函数库进行编程的过程中,常常会需要用到这些结构类型,只有真正了解这些结构才能够很好地利用OpenCV函数库来解决问题。
下面对几个比较常用的简单结构进行介绍。
在这些数据类型中最简单的就是CvPoint二维坐标系下的点,类型为整型
typedef struct CvPoint
/* x坐标, 通常以0为基点 */ /* y坐标, 通常以0为基点
正在加载中,请稍后...本帖子已过去太久远了,不再提供回复功能。}

我要回帖

更多关于 c 读取摄像头数据 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信