​第6课 使用openCV捕获摄像头并实现预览功能

33 篇文章 2 订阅
31 篇文章 3 订阅

本课对应源文件下载链接:

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,在主对话框显示摄像头图像则表示预览成功。

  • 20
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西部秋虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值