最近在学校MFC和Opencv,毕业只是做面部识别软件,所以写一个,我觉得很简单。

第一个VC组态opencv。不用说。非常easy,网上资料非常多,然后就是设计界面啦,这个全然凭个人喜好了,我设计的界面是这种:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hlbnNoaTE5OTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

然后就是拍照。保存图片。这个也非常easy,网上资料也非常多,就简单粘贴一下代码吧:

这是打开摄像头的代码:

pwnd = GetDlgItem(IDC_STATIC1);    

    pDC =pwnd->GetDC();  

    hDC= pDC->GetSafeHdc();  

    pwnd->GetClientRect(&rect);

if (!camera.OpenCamera(0,false))  

    {  

        AfxMessageBox("无法打开摄像头");  

        return;  

    }  

  

    //IplImage* m_Frame;  

    m_Frame=camera.QueryFrame();  

    CvvImage m_CvvImage;  

    m_CvvImage.CopyOf(m_Frame,1);     

    if (true)  

    {  

        m_CvvImage.DrawToHDC(hDC, &rect);  

        //cvWaitKey(10);  

    }  

    // 设置计时器,每10ms触发一次事件  

    SetTimer(1,10,NULL); 



}

关闭摄像头:

void CBishe5_1Dlg::OnButton3() 

{

// TODO: Add your control notification handler code here

camera.CloseCamera();

KillTimer(1);


}

保存图片并在第二的picture框中显示:

// TODO: Add your message handler code here and/or call default

pwnd = GetDlgItem(IDC_STATIC1);    

    pDC =pwnd->GetDC();  

    hDC= pDC->GetSafeHdc();  

    pwnd->GetClientRect(&rect);

m_Frame=camera.QueryFrame();

  

    CvvImage m_CvvImage;  

    m_CvvImage.CopyOf(m_Frame,1);     

    if (true)  

{  

        m_CvvImage.DrawToHDC(hDC, &rect); 

        //cvWaitKey(10);  

    }



CDialog::OnTimer(nIDEvent);

}


在摄像头拍摄图片中还遇到了问题,应该是兼容性的问题。我是在win7系统上执行VC和opencv1.0,当中opencv1.0中打开摄像头操作无法执行,后来搞了好长时间。找了一些资料,后来将打开摄像头等操作代码不调用opencv1.0的。自己写代码从win7的API调用,此段代码是一个大神写的。非常好用,十分感谢他的,代码非常长,就不粘贴了,网上细致找找都有。

接下来就是图像识别了,这个我感觉非常easy,我花了一下人脸识别的程序框图,帮助大家理解一下:

事实上程序非常easy,我就张贴一下我的找出人脸并圈出人脸的代码,其它鼻子嘴巴等五官识别都差点儿相同:

CvSeq* FaceDet(IplImage* imgSrc, IplImage* imgDst)

{

if(imgSrc != imgDst)

{

cvReleaseImage(&imgDst);

imgDst = cvCloneImage(imgSrc);

}





const char* cascade = "haarcascade_frontalface_alt2.xml";

CString file = getXMLFile(cascade);



CvSeq * faces = CvHarrEx(imgSrc, NULL, /*FACEXML*/file, cvSize(20, 20));





if(!faces)

{

MessageBox(NULL,"此人长得太帅!

!导致计算机无法识别。实在不好意思", "", 0);

return NULL;

}





//Reduce(faces);



int i, n = faces->total;

CvRect* r;





//--check whether have eyes in the face

for(i = 0; i < n; i++)

{

   r = (CvRect*)cvGetSeqElem( faces, i );



if( CvHarrEx(imgSrc, r, /*EYERXML*/getXMLFile("ojoD.xml"), cvSize(18, 12)) == NULL)

{

cvSeqRemove(faces, i);

i--;

n = faces->total;

}

}





DrawCircle(imgSrc, imgDst, faces, cvPoint(0,0));

return faces;

}

终于结果是将人脸五官全识别并圈出来:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hlbnNoaTE5OTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

详细就这些了,全程序我打包发在CSDN的下载中把,事实上还没搞完,原本想建,把家人的脸都训练成模板,建一个模型库,然后当外人出如今摄像头前,在模板库中找不到匹配的模板,然后报警。

嗯嗯,小弟刚開始学,比与水相比,。第一次写博客,很多关注大神。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

基于VC面部识别软件(识别出人脸特征)的更多相关文章

  1. java 虹软ArcFace 2.0,java SDK使用、人脸识别-抽取人脸特征并做比对

    java人脸识别 虹软ArcFace 2.0,java SDK使用.人脸识别-抽取人脸特征并做比对 虹软产品地址:http://ai.arcsoft.com.cn/product/arcface.ht ...

  2. 人脸检测及识别python实现系列(2)——识别出人脸

    人脸检测及识别python实现系列(2)——识别出人脸 http://www.cnblogs.com/neo-T/p/6430583.html

  3. 03-人脸识别-基于MTCNN,显示5个人脸特征

    import tensorflow as tf import numpy as np import cv2 import detect_face import matplotlib.pyplot as ...

  4. 使用python3.7和opencv4.1来实现人脸识别和人脸特征比对以及模型训练

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_126 OpenCV4.1已经发布将近一年了,其人脸识别速度和性能有了一定的提高,这里我们使用opencv来做一个实时活体面部识别的 ...

  5. 基于百度AI开放平台的人脸识别及语音合成

    基于百度AI的人脸识别及语音合成课题 课题需求 (1)人脸识别 在Web界面上传人的照片,后台使用Java技术接收图片,然后对图片进行解码,调用云平台接口识别人脸特征,接收平台返回的人员年龄.性别.颜 ...

  6. 万张PubFig人脸数据实现基于python+OpenCV的人脸特征定位程序(1)

    在最近刷今日头条以及其他媒体软件时,经常会发现一些AI换脸的视频,于是我想,可不可以自己实现一个可以进行人脸识别的软件程序.我的具体流程是先配合python网络爬虫先进行万张PubFig人脸公共图片的 ...

  7. vs2017 dlib19.3 opencv3.41 C++ 环境配置 人脸特征点识别

    身为一个.net程序员经过两天的采坑终于把人脸特征检测的项目跑通了,然后本文将以dlib项目中人脸特征检测工程为例,讲解dlib与opencv 在vs2017 C++ 项目中的编译与运行路径配置. 1 ...

  8. 自己编写的基于VC++6.0的串口调试软件,并贡献源程序!

    自己编写的基于VC++6.0的串口调试软件源程序! 程序下载链接: 点击打开链接

  9. 人脸检测及识别python实现系列(6)——终篇:从实时视频流识别出“我”

    人脸检测及识别python实现系列(6)——终篇:从实时视频流识别出“我” 终于到了最后一步,激动时刻就要来临了,先平复一下心情,把剩下的代码加上,首先是为Model类增加一个预测函数: #识别人脸 ...

随机推荐

  1. vscode visual studio code svn 小乌龟 快捷键设置

    首先要安装svn小乌龟 然后安装vs code的svn插件TortoiseSVN for VS Code 文件->首选项->键盘快捷方式->搜索svn->找到相应命令然后设置快 ...

  2. 【51.27%】【codeforces 604A】Uncowed Forces

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  3. Qt多线程学习-用例子来理解多线程(转),这个是我看过最好的文章,总结很详细(感觉exec()的作用就是保持线程不退出,这样方便随时处理主线程发来的信号,是一种非常别致的思路)good

    01 class MThread :public QThread 02 { 03 public: 04     MThread(); 05     ~MThread(); 06     virtual ...

  4. 在CentOS上使用Nginx和Tomcat搭建高可用高并发网站

    目录 目录 前言 创建CentOS虚拟机 安装Nginx 安装Tomcat 安装lvs和keepalived 反向代理 部署网站 搭建数据库 编写网站项目 解决session一致性 注意 参考资料 前 ...

  5. 手把手教你完成App支付JAVA后台-支付宝支付JAVA

    接着上一篇博客,我们暂时完成了手机端的部分支付代码,接下来,我们继续写后台的代码. 后台基本需要到以下几个参数,我都将他们写在了properties文件中: 支付宝参数 AliPay.payURL = ...

  6. URL传递中文参数,大坑一枚,Windows与Linux效果竟然不一致(两种解决方法)

    下午,计划2个小时搞定,个人官网第6次升级,就可以干点轻松的事了,结果,下午多搞了2个小时,晚上又搞了2个小时,才搞定. 最后一个世界难题是,URL传递中文参数. 问题大致是这么出现的:我为" ...

  7. Vagi单点登录1.0

    Vagi是一款基于CAS(CAS v4)的Web应用单点登录系统.(cas web https://github.com/Jasig/cas) 对数据库用户存储支持 加入登录验证码 新浪微博和QQ互联 ...

  8. iOS app审核参考信息地址

    发件人:(苹果开发支持邮箱地址) 中国区电话:400-670-1855 chinadev<chinadev@asia.apple.com>   您好: 感谢您与 Apple 开发者计划支持 ...

  9. 通过引入SiteMesh的JSP标签库,解决Freemarker与SiteMesh整合时,自定义SiteMesh标签的问题

    不少web项目,都用到了SiteMesh.SiteMesh可以和JSP.Freemarker等模版进行整合,有一定的好处,当然也有其不好的地方.我个人觉得,如果没有必要,不要在项目中引入太多的工具和技 ...

  10. 属性动画Property Animation

    ViewPropertyAnimation 使用方式:View.animate() 后跟 translationX() 等方法,动画会自动执行. 注意translationX实现是调用对应的set方法 ...