基于QT和OpenCV的人脸检测识别系统(1)

人脸识别分为两大步骤

1.人脸检测 这个是首要实现的,你得实现人脸显示的时候把人脸框出来,当然算法很多,还有一些人眼检测鼻子检测什么的

主要用的是这个

 const char *faceCascadeFilename = "haarcascade_frontalface_alt.xml";

 detect_and_draw(IplImageBuffer,storage,cascade);

这个函数就是检测人脸的并画框效果如下


主要代码如下

void Chenaini::detect_and_draw(IplImage* img,CvMemStorage* storage, CvHaarClassifierCascade* cascade)
{
    double scale=1.2;
    static CvScalar colors[] = {
        {{0,0,255}},{{0,128,255}},{{0,255,255}},{{0,255,0}},
        {{255,128,0}},{{255,255,0}},{{255,0,0}},{{255,0,255}}
    };//Just some pretty colors to draw with


    IplImage* gray = cvCreateImage(cvSize(img->width,img->height),8,1);
    IplImage* small_img=cvCreateImage(cvSize(cvRound(img->width/scale),cvRound(img->height/scale)),8,1);
    cvCvtColor(img,gray, CV_BGR2GRAY);
    cvResize(gray, small_img, CV_INTER_LINEAR);

    cvEqualizeHist(small_img,small_img);     cvClearMemStorage(storage);
    double t = (double)cvGetTickCount();
    CvSize min=cvSize(0,0);
    CvSize max=cvSize(100,100);
    CvSeq *objects = cvHaarDetectObjects(  small_img,
                                                                      cascade,storage,
                                                                      1.1,
                                                                      3, 0/*CV_HAAR_DO_CANNY_PRUNING*/,
                                                                      min,
                                                                      max );

    t = (double)cvGetTickCount() - t;
    printf( "detection time = %gms\n", t/((double)cvGetTickFrequency()*1000.) );

    //Loop through found objects and draw boxes around them
    for(int i=0;i<(objects? objects->total:0);++i)
    {
        CvRect* r=(CvRect*)cvGetSeqElem(objects,i);

        cvRectangle(img, cvPoint(r->x*scale,r->y*scale), cvPoint((r->x+r->width)*scale,(r->y+r->height)*scale), 

               colors[i%8]);

    }
    for( int i = 0; i < (objects? objects->total : 0); i++ )
    {
        CvRect* r = (CvRect*)cvGetSeqElem( objects, i );
        CvPoint center;
        int radius;
        center.x = cvRound((r->x + r->width*0.5)*scale);
        center.y = cvRound((r->y + r->height*0.5)*scale);
        radius = cvRound((r->width + r->height)*0.25*scale);
        cvCircle( img, center, radius, colors[i%8], 3, 8, 0 );
    }

     QImage image(( uchar*)img->imageData, img->width, img->height, QImage::Format_RGB888);

     ui->label_shipin->clear();
     ui->label_shipin->setScaledContents(true);
     ui->label_shipin->setPixmap(QPixmap::fromImage(image));
     rs = vd->unget_frame();
     cvReleaseImage(&img);

}

### 回答1: 很高兴可以为您解答这个问题。在 Ubuntu 系统下,搭建基于 QtOpenCV人脸识别系统,首先要安装 QtOpenCV 和其他必需的库。其次,要使用 OpenCV 开发一个人脸识别程序,并使用 Qt 将其连接到用户界面。最后,通过测试,确保人脸识别系统能够正常工作。 ### 回答2: 在Ubuntu系统下搭建基于QtOpenCV人脸识别系统,我们需要按照以下步骤进行操作: 1. 安装QtOpenCV库。使用命令`sudo apt-get install qt5-default`来安装Qt库,使用命令`sudo apt-get install libopencv-dev`来安装OpenCV库。 2. 创建一个Qt项目。使用Qt Creator创建一个空白项目,并设置相关的项目配置,如选择正确的Qt版本和构建选项。 3. 编写Qt界面。使用Qt Designer来设计人脸识别系统的界面,包括显示图像的视图和用于操作的按钮等。 4. 导入OpenCV库。在Qt项目中添加OpenCV的头文件和库文件的链接,以便可以使用OpenCV的功能。 5. 编写人脸识别算法。使用OpenCV人脸识别功能,如Haar特征分类器或深度学习网络,来进行人脸检测和识别。 6. 将界面和算法进行连接。使用Qt信号和槽机制,将界面中的按钮点击事件和算法中的人脸识别函数进行连接,使得系统可以实时进行人脸识别。 7. 编译和运行。使用Qt Creator编译项目并运行生成的可执行文件,即可在Ubuntu系统下使用基于QtOpenCV人脸识别系统。 需要注意的是,在搭建人脸识别系统时,还需考虑输入设备(如摄像头)的连接和设置,以及其他与系统交互的功能(如保存识别结果等)的实现。以上只是一个基本的搭建过程,具体实现还需根据具体需求进行调整和扩展。 ### 回答3: 在Ubuntu系统下搭建基于QtOpenCV人脸识别系统,可以按照以下步骤进行: 1. 安装QtOpenCV:在Ubuntu终端中运行命令`sudo apt-get install libqt4-dev`和`sudo apt-get install libopencv-dev`,安装QtOpenCV的开发库和依赖项。 2. 创建一个Qt工程:在Qt Creator中创建一个新的Qt项目,选择一个合适的项目模板。 3. 配置Qt工程:打开添加Qt项目后自动生成的.pro文件,在文件中添加QtOpenCV的库路径和链接库。例如: ``` LIBS += -L/path/to/opencv/lib -lopencv_core -lopencv_imgproc -lopencv_highgui ``` 其中`/path/to/opencv/lib`是你的OpenCV库所在的路径。 4. 编写代码:在Qt工程中编写人脸识别的代码。通常需要包括以下步骤: a. 加载人脸识别的模型文件,例如使用OpenCV的`CascadeClassifier`类加载人脸级联分类器模型。 b. 打开摄像头或者读取视频文件,获取人脸图像。 c. 将获取的图像转换为灰度图像,并进行直方图均衡化处理。 d. 使用人脸级联分类器对图像进行人脸检测,并标记出检测到的人脸。 e. 可以选择对检测到的人脸进行特征提取,并使用相关算法进行人脸比对。 f. 最后展示识别结果,例如在图像上绘制检测到的人脸框,并在框上显示识别结果。 5. 编译和运行:在Qt Creator中编译Qt项目,并运行生成的可执行文件,即可启动人脸识别系统。 注意:以上仅为搭建基础的人脸识别系统的步骤,在实际应用中可能还需要考虑性能优化、用户界面设计等问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值