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); } }
/** * @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(); }