最近在学校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. wikioi 1051哈希表

    题目描写叙述 Description 给出了N个单词,已经按长度排好了序.假设某单词i是某单词j的前缀,i->j算一次接龙(两个同样的单词不能算接龙). 你的任务是:对于输入的单词,找出最长的龙 ...

  2. Java中String推断相等equals与==的差别以及StringBuilder的equals

    Java中String类型具有一个equals的方法能够用于推断两种字符串是否相等,可是这样的相等又与运算符==所推断的"相等"有所不同,接下来进行分析,结论由程序进行验证 Str ...

  3. [Angular Unit Testing] Testing Pipe

    import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'filesize' }) export class FileSi ...

  4. [Docker] Prune Old Unused Docker Containers and Images

    In this lesson, we will look at docker container prune to remove old docker containers. We can also ...

  5. [转] Valgrind使用

    http://www.cnblogs.com/napoleon_liu/articles/2001802.html 调不尽的内存泄漏,用不完的Valgrind Valgrind 安装 1. 到www. ...

  6. 【b094&&z14】靶形数独

    [问题描述] 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的分们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向Z博士请教,Z博士拿出了他最近发明的&qu ...

  7. [NPM] Create a node script to replace a complex npm script

    In this lesson we will look at pulling out complex npm script logic into an external JavaScript file ...

  8. mysqldump --single-transaction 和--lock-tables参数详解

    mysqldump的备份原理 mysqldump在备份过程中,是采用查询备份相关表的数据,然后导出,拼接成insert语句的形式进行备份.   关于--single-transaction 和--lo ...

  9. js进阶 9-7 自动计算商品价值

    js进阶 9-7  自动计算商品价值 一.总结 一句话总结: 1.form表单控件value属性:属性可取值可赋值 2.文本onchange事件 3.form及form中控件通过name访问元素 二. ...

  10. ITFriend创业败局(序):简要概述我的第一次创业经历

    是时候, 面对过去,继续踏上未来之路了.    是时候,该给自己一个交待了,给ITFriend创业合伙人.ITFriend用户.关注我的朋友和网友们一个答复了.    是时候,全面认真总结过去的经历. ...