赞
踩
本课对应源文件下载链接:
https://download.csdn.net/download/XiBuQiuChong/88802175
从这节课开始,我们将逐步利用ffmpeg和openCV实现一个可以将usb摄像头画面及麦克风声音合并在一起推送到rtmp服务器的推流工具,这种工具一般可用于视频直播、会议、授课等场景,可以说应用场景非常广泛。推流端的最基本功能其实就两个:预览画面并将画面和声音合并后推送到rtmp服务器,为降低难度,这节课我们先实现摄像头的预览功能。
一、最终实现的效果
二、使用openCV捕获摄像头并实现预览功能的原理
与FFmpeg类似,openCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,供了丰富的图像处理和计算机视觉算法。它可以用于处理图像和视频数据,以及进行特征提取、目标检测、图像分割、运动跟踪等任务。以下是一些openCV的主要功能:
图像读取和显示:openCV可以读取和保存各种图像格式,并提供了显示图像的函数。
图像处理:openCV提供了丰富的图像处理函数,包括图像滤波、边缘检测、图像变换、颜色空间转换等。
特征提取和描述:openCV支持各种特征提取算法,如SIFT、SURF、ORB等,并提供了特征描述子的计算和匹配函数。
目标检测:openCV提供了多种目标检测算法,如Haar特征分类器、HOG特征分类器、级联分类器等。
图像分割:openCV支持基于颜色、纹理、形状等特征的图像分割算法,如GrabCut、MeanShift、Watershed等。
运动跟踪:openCV提供了多种运动跟踪算法,如光流法、卡尔曼滤波器、背景减除等。
三维重建:openCV支持从多个图像中恢复三维场景的算法,如立体匹配、结构光、稀疏重建等。
机器学习:openCV集成了机器学习库,包括支持向量机(SVM)、随机森林(Random Forest)、神经网络等算法。
摄像头和视频处理:openCV可以直接从摄像头读取视频流,并提供了视频处理函数,如帧差法、光流法等。
图像拼接和全景图像:openCV支持将多个图像拼接成全景图像的算法,如SIFT特征匹配、RANSAC算法等。
如上所述,可以直接用openCV捕获摄像头画面并将其显示到MFC窗口中。
三、捕获摄像头画面并预览的具体实现
1.解压缩第一节课的demo1.rar,并修改工程文件夹demo1为demo5,及时备份源文件并在原基础上继续迭代开发是一种好习惯。
2.为了与上节课的播放功能区分,新建或直接复制fmlp(Flash Media Live Player)类为一个新的fmle(Flash Media Live Encoder)类,并修改主对话框相应代码使fmle能正常工作。
修改如下:
- //#include "fmlp.h"
- #include "fmle.h"
-
- //fmlp *myFmlp = new fmlp();
- fmle *myFmle = new fmle();
3.在fmle.cpp的init函数中新开线程打开摄像头并预览:
- int fmle::init()
- {
- capCamHandle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)capCamThread, (LPVOID)this, 0, NULL);
- return 0;
- }
- DWORD WINAPI fmle::capCamThread(LPVOID lpParam) {
- fmle *pThis = (fmle*)lpParam;
- pThis->capCam();
- return 0;
- }
- int fmle::capCam() {
- videoCap.open(0);
- cv::Mat camMat;
- while (true)
- {
- if (!videoCap.isOpened()){
- Sleep(1);
- continue;
- }
- BOOL ifSuccess = videoCap.read(camMat);
- if (camMat.empty())
- {
- Sleep(1);
- continue;
- }
-
- if (!camMat.empty()){
- cv::imshow("video", camMat);
- cv::waitKey(10);
-
- }
- }
- camMat.release();
-
- return 0;
- }
如果弹出video对话框并显示摄像头图像则表示成功。
4.参考第2课将图像显示到程序主对话框,为了与播放器区分,新方法命名为drawMatOfPub,在主对话框显示摄像头图像则表示预览成功。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。