Esempio n. 1
0
void FaceDetector::applyFilter()
{
    static int a = 0;
    //frameCount++;
    dotPatternFilter->setLogText(logTxt);
    //cv::flip(grayImgMat,grayImgMat,1);
    if(isChanged()){
        faces.clear();
        tempfaces.clear();
        if(medianBlurSize%2 != 1){
            appendLog(QString::number(medianBlurSize));
            medianBlurSize++;
        }
        cv::medianBlur(grayImgMat,grayImgMat,medianBlurSize);

        if(!frontalFaceCascade.empty()){
            frontalFaceCascade.detectMultiScale(grayImgMat,faces,1.1,rectThreshold,0,cv::Size(10,10));
        }
        if(!profileFaceCascade.empty()){
            profileFaceCascade.detectMultiScale(grayImgMat,tempfaces,1.1,rectThreshold,0,cv::Size(10,10));
            for(int i=0; i<tempfaces.size();++i){
                faces.push_back(tempfaces[i]);
            }
        }
        originalImg.copyTo(processedImg);
        //cv::flip(processedImg,processedImg,1);
        for(int i=0; i<faces.size(); ++i){
            cv::rectangle(processedImg,faces[i],cv::Scalar(0,0,0),3,8,0);
            cv::Mat ff(processedImg,faces[i]);
            cv::Ptr<cv::FeatureDetector> d = cv::AKAZE::create();
            std::vector<cv::KeyPoint> keypoints;
            d->detect(ff,keypoints);
            cv::drawKeypoints(ff,keypoints,ff);
            if(currentFilter!=NULL){
                cv::Mat temp(processedImg,faces[i]);
                currentFilter->setImage(temp);
                currentFilter->applyFilter();
                temp = currentFilter->getImage();
                temp.copyTo(processedImg(faces[i]));
            }
        }
        setChanged(false);
    }
}
Esempio n. 2
0
/**
 * @brief KGuardiantServer::run
 */
void KGuardiantServer::run()
{
    //Bloque de código principal.
    qDebug() << "KGuardiantServer.Run is executing";
    log->log("KGuardiantServer.Run is executing");



    cam = new DeviceMgr(this);
    clock = new QTimer(this);
    clock->setInterval(300);
    clock->setSingleShot(false);

    connect(cam,
            SIGNAL(finished()),
            cam,
            SLOT(deleteLater()));

    connect(clock,
            SIGNAL(timeout()),
            cam,
            SLOT(requestImage()));

    detector = new MovementDetector(this);

    connect(cam,
            SIGNAL(newImage(cv::Mat&)),
            detector,
            SLOT(processImg(cv::Mat&)),
                 Qt::DirectConnection);
    connect(cam,
            SIGNAL(newImage(cv::Mat&,cv::Mat&)),
            detector,
            SLOT(processImg(cv::Mat&,cv::Mat&))
            ,Qt::DirectConnection);

    connect(detector,
            SIGNAL(processedImg(QByteArray)),
            &server,
            SLOT(sendImg(QByteArray)));

    connect(detector,
            SIGNAL(finished()),
            detector,
            SLOT(deleteLater()));


    console = new Console(this);

    connect(console,SIGNAL(finished()),console,SLOT(deleteLater()));
    connect(console,SIGNAL(startServer()),&server,SLOT(startServer()));
    connect(console,SIGNAL(stopServer()),&server,SLOT(stopServer()));
    connect(console,SIGNAL(checkClients()),&server,SLOT(requestClients()));
    connect(&server,
            SIGNAL(clientList(QHash<qintptr,TCPConnection*>*)),
            console,
            SLOT(printClients(QHash<qintptr,TCPConnection*>*)));
    connect(console,SIGNAL(finish()),this,SLOT(quit()));




    cam->start();
    detector->start();
    clock->start();
    server.startServer();
    //console->start();
    //QTimer::singleShot(10,console,SLOT(startC()));
    //Débese chamar a quit() para finalizar o bucle de eventos do sistema.
    //quit();
}