C++课程设计日志(人脸识别+音视频播放器)

由于注册功能不可避免地要使用到摄像头,这就需要我们引入OpenCV(open source computer vision library),这是一个基于BSD许可(开源)发行的跨平台计算机视觉库,它轻量级而且高效,由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。

首先进入https://opencv.org/releases/ 网站下载opencv的安装包,解压安装好后,将安装路径配置到环境变量中,然后将opencv_world440.dll opencv_world440d.dll opencv_videoio_ffmpeg440_64.dll三个动态链接库到C:\Windows\System32 路径下,最后配置opencv 目录及链接器。

这样我们就部署好了opencv,可以使用库里面的各种功能。

1.处理背景图片切换的定时器 

if (nIDEvent == 1) {
	m_snowBG.SetBitmap(m_snows[snowIndex]);
	snowIndex = (snowIndex + 1) % 16;
}//- nIDEvent == 1 时,定时器每次触发会切换背景图片。
//- m_snowBG.SetBitmap(m_snows[snowIndex]):设置背景图片为 m_snows 数组中的当前图片。
//- snowIndex = (snowIndex + 1) % 16:更新图片索引,使其在 0 到 15 之间循环。

2. 处理摄像头拍照和显示的定时器

else if(nIDEvent == 2){
	//使用摄像头拍摄头像并进行显示
	refreshCamera(&cap, m_hWnd, IDC_PHOTO_REAL);
	count++;
	if (count == 1) {
		mciSendString(L"play res/zhuce.mp3", 0, 0, 0);
	}
	else if (count == 30) {
		paiZhao(&cap, "tmp.jpg");
		count = 0;
		KillTimer(2);//关闭定时器
		cap.release();//关闭摄像头


		IplImage* img1 = cvLoadImage("tmp.jpg");
		IplImage* img2 = cvLoadImage("res/neijun.jpg");
		float xiShu = faceCompare(faceModel, img1, img2);
		int yanZhi = xiShu * 1000 + 80 + rand() % 15;
		if (yanZhi <= 0) {
			yanZhi = 60;
		}
		else if (yanZhi >= 100) {
			yanZhi = 99;
		}
		//生成职业
		const char* jobs[] = { "精神科主任","精神科副主任","精神科实习生" };
		//工作-用户名-颜值.jpg
		CString editName;
		m_name.GetWindowText(editName);
		USES_CONVERSION;
		char* editName2 = T2A(editName);


		char cmd[521];
		sprintf_s(cmd, sizeof(cmd), "move tmp.jpg users\\%s-%s-%d.jpg",
			jobs[rand() % 3], editName2, yanZhi);
		system(cmd);

		WinWelcome win;
		win.DoModal();

		CDialogEx::OnOK();//nIDEvent == 2 时,定时器每次触发会从摄像头捕捉图像并显示。
//refreshCamera(&cap, mhWnd, IDC_PHOTO_REAL)`:刷新摄像头图像并显示在窗口中。
//count++:增加计数器
//if (count == 1):第一次计时器触发时播放音频文件 zhuce.mp3。
//else if (count == 30):第 30 次计时器触发时进行拍照和后续处理:
//paiZhao(&cap, "tmp.jpg")`:拍照并保存为 `tmp.jpg`。
//count = 0`:重置计数器。
//KillTimer(2)`:关闭定时器。
//cap.release()`:关闭摄像头。
//加载图像并进行人脸比较。
//根据比较结果生成“颜值”并计算最终结果。
//根据生成的颜值和用户输入的用户名创建文件名,并将 `tmp.jpg` 移动到 `users` 目录下。
//打开一个新窗口 WinWelcome 并关闭当前对话框。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值