opencv使用过程中的一些感受

1。第一回使用Opencv的目的是为了能采集笔记本的视频,想要做一个视频聊天的软件,大概思路是采集到的码流转成H.264,然后再加上转成TS或者PS通过RTP协议或者RTP在TCP上来发送给另外一个用户,另一个用户收到视频流后,反向得到码流,然后显示到软件上,最终实现视频聊天的目的。

2.最简单的代码如下:

首先定义一个采集的类对象

VideoCapture inputVideo(0);

下面是显示部分,通过一个MFC的定时器,定时40ms来触发一次,最终在界面上显示,大概是1000/40ms=25帧,一秒25帧的数据。

void CMFCApplication1Dlg::OnBnClickedButton1()
{
    SetTimer(1, 40, NULL);
    return;
}

void CMFCApplication1Dlg::OnBnClickedButton2()
{
    KillTimer(1);
}


void CMFCApplication1Dlg::OnTimer(UINT_PTR nIDEvent)
{
    // TODO:  在此添加消息处理程序代码和/或调用默认值
    Mat src;
    inputVideo >> src;
    if (src.empty()) return;
    imshow("view", src);
    CDialogEx::OnTimer(nIDEvent);
}
最终就能出来视频了。大概界面效果如下:(比较宅,不晒本人照片了)


在学习调用opencv的过程中了解到下面的东西:

opencv是个图像处理库,它封装了大量图像处理算法,与视频采集没有关系,但这个库的使用者为了方便,把VFW(Video for windows)也集成到了opencv,已达到视频采集和图像处理的封装到一起的目的;

而DirectShow是微软公司在VFW的基础上推出了新一代基于COM的流媒体处理的开发包,在视频开发中,不论从效率还是实用性上都好于VFW。

编码,解码 把图像编制成视频流,或把视频流解码成图像的算法,H.264只是其中的一种,比较常用的编码器还有VCD,DVD,MEEG4,不过为了在网上传输,H.264算法基本已成为一种趋势了,它主要特点是编码后视频文件小而清晰;使用264通常可以使用现成封装好的库,同264库,也有好多种,有免费的,有收费的,也可以自己写,不过好像很难,没必要。

发送端:

directshow--》从摄像头采集图像--》发送h。264编码器压制成视频文件--》网络传输--》接收端

接收端:

directshow-》从网络采集图像--》通过H。264编码器在本地播放视频或保存视频。

directshow是由大量的fileter构成的,如果只是采集,通现成的fileter即可。


opencv简介:

Opencv(Open Source Computer Vision Library)是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux,Windows,android,ios等操作系统上,它轻量级而且高效--由一系列C语言和少量C++类构成,同时提供了Python,Ruby,MATLAB等语言的接口,实现了图像处理和计算机视觉方面的诸多通用算法。

【calib3d】--Calibration和3D,相机校准和三维重建相关

【contrib】--新增人脸识别,立体匹配,人工视网膜模型等技术

【core】--核心功能模块,包含Opencv基本数据结构和绘图函数等

【imgproc】--Image/Process,包含滤波,几何变换,直方图相关,特征检测,运动分析和形状描述等

【features2d】--2D功能框架,主要包含特征检测和描述及接口

【Flann】--高维的近似金邻快速搜索算法库

【gpu】--运用GPU加速的计算机视觉模块

【highgui】--高层图形用户界面,包含媒体输入输出,视频捕获,图像和视频的编码和解码,图形交互界面接口等

【legacy】--包含运动分析,平面细分,描述符提取等

【ml】--Machine learning,机器学习模块

【objdetect】--目标检测模块

【photo】--包含图像修复和图像去噪两部分

【。。。。】


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值