




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、IPCam播放器端开发1:视频传输:视频传输rtp。(缓冲机制)。(缓冲机制)2:人脸识别:人脸识别3:MFC多窗口播放多窗口播放视频传输rtp 这部分主要说明下从rtp接收数据以后到送往解码器的处理过程。 如果每接收一帧,就把这帧送往解码器,解码显示,就会出现花屏。造成这种现象的原因主要在于并不是所有采集的帧都送往解码器。 解决这种问题主要是采用双线程和缓冲机制。丢帧的原因 如果接收和解码在一个线程中,那么会遇到一个问题就是如果解码一个较大的帧(比如一个I帧)所花的时间内接受2个较小的帧(P帧或B帧)。这时就只能保存一个帧,从而出现丢帧的问题。 举例说明下: IPPPPPP 如果第一个P帧丢
2、失,第二个P帧以第一个P帧做参考,因此第二个P帧花屏。双线程,缓冲区 缓冲区采用循环队列的方式。 双线程: 一个线程往缓冲区里面放数据,一个线程从缓冲区里面取数据并解码。 判断缓冲区是否满的方式 1:牺牲存储空间 2:flag标记 注意:缓冲区需要存储每个帧的长度缓冲区的访问 缓冲区互斥访问,然而互斥访问就有一个问题那就是读和写会占据一定的时间,不能同时访问。(丢帧) 采用event(事件)(缓冲区发散)。 如果解码一个很大的帧,解码线程需要花相当多的时间,这时接收数据线程传来2个event,然而传给解码进程的只有后面一个event,那么就有一帧数据永远无法从缓冲区取出来 采用信号量semap
3、hor可以解决以上问题。接收线程每次往缓冲区里面存一个数据,semaphor就加1.解码线程每取一个数据semaphor就减一,只要有数据解码线程就可以一直取,没有数据,那么解码线程阻塞等待,这样可以解决缓冲区发散的问题。帧的存储和提取方式 存储帧大小时 Size为一帧的大小 FirstBit = size& 0 xff; SecondBit = (size8) & 0 xff; 取帧大小时 Size=BufQuetail |BufQue(tail+1)%BUF_SZIE 8 | BufQue(tail+2)%BUF_SZIE 16 |BufQue(tail+3)%BUF_SZ
4、IE width,img-height), 8, 1 ); /创建一个灰度图small_img = cvCreateImage( cvSize( cvRound (img-width/scale),cvRound (img-height/scale),8, 1 ); / 建立缩小的图片,加快检测速度 /cvRound (double value) 对一个double型的数进行四舍五入,并返回一个整型数!cvCvtColor( img, gray, CV_BGR2GRAY ); /转成灰度图像,Harr特征基于灰度图cvResize( gray, small_img, CV_INTER_LINE
5、AR ); /改变图像大小,使用双线性差值cvEqualizeHist( small_img, small_img ); /变换后的图像进行直方图均值化处理CvSeq* faces = cvHaarDetectObjects( small_img, cascade, storage, 1.1, 2, 0, cvSize(30, 30) );/将人脸信息保存在faces中CvRect* r = (CvRect*)cvGetSeqElem( faces, i ); /获得第i个人脸所在的矩形区域cvSetImageROI(small_img,*r);/基于给定的矩形设置图像的ROI(感兴趣区域cv
6、Copy(small_img,temp_img);/获得人脸图片cvSaveImage(FaceImgName,temp_img);/保存人脸图片人脸识别LBP算法 LBP是英文Local Binary Pattern的首字母的缩写,意思是局部二进制图案。是当前算法比较简单的,但是却又十分高效的图片特征分析算法。LBP的计算方法 像素 红绿蓝人脸识别基于黑白照片 灰度值 0-2559X9的方格判断依据:该格的灰度值比中间的灰度值大,那么就记为1该格灰度值比中间的灰度值小的,那么就记为0以自我规定的起点和自我规定的方向旋转,列出二进制码得到了二进制码将二进制码换算成十进制的数。这个数就是该像素区
7、域的LBP此LBP应该是0到28的范围。得到了每个像素分割的LBP建立一个直方图,每个LBP的种类作横轴,每种LBP出现的次数为纵轴这张图就是该图像可以与其他图像的特征Uniform LBP传统的LBP的虽然可以更加精确的反映出一个图像的特征,但是运算速度和内存占用量却很大精度精度速度速度溯回到得到二进制码的那一步。得到的二进制码,01变化少于等于两次的二进制码形成的LBP看成是一个 uniform LBP ,比如说图中的11000011,01变化次数是两次。就是一个uniform LBP。这种类型占很大比例各种类型的uniform LBP(九格)个数是P*(P-1)+2 得到了uniform
8、 LBP建立一个直方图,以uniform LBP的种类为横轴。以每个种类出现的次数作为纵轴,不是uniform LBP另作为一个种类。这个直方图有P*(P-1)+2个种类,而传统的有2p个种类直方图之间的比较方法得到了两幅图的直方图特征后,我们可以比较这两个图像的拟合程度 首先计算要对比图片直方图里,每一种取值的次数占全部的比例。也就是频率 之后再计算原图的直方图的每一种取值的次数占全部的比例。其中,Sb是待测图像直方图的每一种取值的频率Mb是样本图像直方图的每一种取值的频率。B 为取值的所有种类判断依据:L越接近于0,这两个图像拟合度越高Opencv的人脸识别例子所在文件夹D:opencvo
9、pencvsourcesmodulescontribdocfacerecsrc人脸识别用到的主要数据结构和函数vector images;/保存人脸图片 vector labels;/保存人脸对应人的编号Mat mat = imread(pathpicture, 0);/提取人脸对应的矩阵Ptr model = createLBPHFaceRecognizer(); model-train(images, labels); /训练imagesint predictedLabel = model-predict(testSample);/预测返回一个相似度的值,值越小相似度越高modesave-save(“eigenfaces_at.yml”); /保存人脸信息Ptr modeload = createEigenFaceRecognizer(); modeload-load(“eigenfaces_at.yml”);/从yml里面加载人脸信息,不需要训
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银冶炼过程中的生产质量控制方法考核试卷
- 烘焙坊设计与布局考核试卷
- 软件项目管理工具与实践考核试卷
- 后鼻韵母教学设计
- 校园急救事故案例分析及应对策略
- 浅析外科换药
- 章小缓口腔健康环境研究
- 东南亚消费行业4月跟踪报告:印尼与泰国经济增长放缓
- 数字化银行零售业务营销转型中的金融产品创新报告2025
- 针对金融衍生品市场2025年创新风险的保险产品设计与应用报告
- 七氟丙烷气体灭火系统操作规程
- 基于ASME设计规范的汽轮发电机转子齿疲劳强度分析
- 江苏省建筑与装饰工程计价定额(2014)电子表格版
- 行书教程智慧树知到期末考试答案2024年
- 24春国家开放大学《知识产权法》形考任务1-4参考答案
- 健身与减脂塑型智慧树知到期末考试答案2024年
- 新疆友好集团员工手册
- 西藏蔬菜行业分析
- QCT 998-2023 汽车空调滤清器 (正式版)
- 部编版五年级语文下册同步作文1-8单元习作作文汇总(全册)
- 共享厨房的创业计划书
评论
0/150
提交评论