diff --git a/AddPersonForm.cpp b/AddPersonForm.cpp index 94437d8..55cbba0 100644 --- a/AddPersonForm.cpp +++ b/AddPersonForm.cpp @@ -152,14 +152,14 @@ ui->labPhotoEyeRight->setPixmap(QPixmap(":/images/photoEyeRight.png")); } -void AddPersonForm::drawImageOnForm() +void AddPersonForm::drawImageOnForm(QImage imageDisp) { -// if (this->faceLabel->isVisible() == true) -// { - LOG(DEBUG) << "DRAW IMAGE ON FORM ";// << imgDisplay.width() << "*" << imgDisplay.height(); -// imgDisplay = imgDisplay.mirrored(true, false); -// faceLabel->setPixmap(QPixmap::fromImage(imgDisplay)); -// } + if (this->faceLabel->isVisible() == true) + { + LOG(TRACE) << "DRAW IMAGE ON FORM " << imageDisp.width() << "*" << imageDisp.height(); + + faceLabel->setPixmap(QPixmap::fromImage(imageDisp)); + } } bool AddPersonForm::validateForm() @@ -272,11 +272,10 @@ // 1人脸图像显示的容器 faceLabel->resize(1280, 720); faceLabel->move(0, 80); - faceLabel->setStyleSheet("background: rgba(0, 255, 0, 0.5)"); faceLabel->raise(); faceLabel->show(); - LOG(DEBUG) << "FACE IMAGE DOUBLE CLICKED"; + LOG(TRACE) << "FACE IMAGE DOUBLE CLICKED"; } void AddPersonForm::onPhotoIrisDoubleClicked() diff --git a/AddPersonForm.cpp b/AddPersonForm.cpp index 94437d8..55cbba0 100644 --- a/AddPersonForm.cpp +++ b/AddPersonForm.cpp @@ -152,14 +152,14 @@ ui->labPhotoEyeRight->setPixmap(QPixmap(":/images/photoEyeRight.png")); } -void AddPersonForm::drawImageOnForm() +void AddPersonForm::drawImageOnForm(QImage imageDisp) { -// if (this->faceLabel->isVisible() == true) -// { - LOG(DEBUG) << "DRAW IMAGE ON FORM ";// << imgDisplay.width() << "*" << imgDisplay.height(); -// imgDisplay = imgDisplay.mirrored(true, false); -// faceLabel->setPixmap(QPixmap::fromImage(imgDisplay)); -// } + if (this->faceLabel->isVisible() == true) + { + LOG(TRACE) << "DRAW IMAGE ON FORM " << imageDisp.width() << "*" << imageDisp.height(); + + faceLabel->setPixmap(QPixmap::fromImage(imageDisp)); + } } bool AddPersonForm::validateForm() @@ -272,11 +272,10 @@ // 1人脸图像显示的容器 faceLabel->resize(1280, 720); faceLabel->move(0, 80); - faceLabel->setStyleSheet("background: rgba(0, 255, 0, 0.5)"); faceLabel->raise(); faceLabel->show(); - LOG(DEBUG) << "FACE IMAGE DOUBLE CLICKED"; + LOG(TRACE) << "FACE IMAGE DOUBLE CLICKED"; } void AddPersonForm::onPhotoIrisDoubleClicked() diff --git a/AddPersonForm.h b/AddPersonForm.h index b9cc49f..e9cc7f3 100644 --- a/AddPersonForm.h +++ b/AddPersonForm.h @@ -3,6 +3,7 @@ #include #include + #include "QDblClickLabel.h" #include "OperationTipsDialog.h" #include "dao/util/CacheManager.h" @@ -29,7 +30,7 @@ void clearPersonInfo(); public slots: - void drawImageOnForm(); + void drawImageOnForm(QImage imageDisp); private slots: void on_btnBack_clicked(); diff --git a/AddPersonForm.cpp b/AddPersonForm.cpp index 94437d8..55cbba0 100644 --- a/AddPersonForm.cpp +++ b/AddPersonForm.cpp @@ -152,14 +152,14 @@ ui->labPhotoEyeRight->setPixmap(QPixmap(":/images/photoEyeRight.png")); } -void AddPersonForm::drawImageOnForm() +void AddPersonForm::drawImageOnForm(QImage imageDisp) { -// if (this->faceLabel->isVisible() == true) -// { - LOG(DEBUG) << "DRAW IMAGE ON FORM ";// << imgDisplay.width() << "*" << imgDisplay.height(); -// imgDisplay = imgDisplay.mirrored(true, false); -// faceLabel->setPixmap(QPixmap::fromImage(imgDisplay)); -// } + if (this->faceLabel->isVisible() == true) + { + LOG(TRACE) << "DRAW IMAGE ON FORM " << imageDisp.width() << "*" << imageDisp.height(); + + faceLabel->setPixmap(QPixmap::fromImage(imageDisp)); + } } bool AddPersonForm::validateForm() @@ -272,11 +272,10 @@ // 1人脸图像显示的容器 faceLabel->resize(1280, 720); faceLabel->move(0, 80); - faceLabel->setStyleSheet("background: rgba(0, 255, 0, 0.5)"); faceLabel->raise(); faceLabel->show(); - LOG(DEBUG) << "FACE IMAGE DOUBLE CLICKED"; + LOG(TRACE) << "FACE IMAGE DOUBLE CLICKED"; } void AddPersonForm::onPhotoIrisDoubleClicked() diff --git a/AddPersonForm.h b/AddPersonForm.h index b9cc49f..e9cc7f3 100644 --- a/AddPersonForm.h +++ b/AddPersonForm.h @@ -3,6 +3,7 @@ #include #include + #include "QDblClickLabel.h" #include "OperationTipsDialog.h" #include "dao/util/CacheManager.h" @@ -29,7 +30,7 @@ void clearPersonInfo(); public slots: - void drawImageOnForm(); + void drawImageOnForm(QImage imageDisp); private slots: void on_btnBack_clicked(); diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index a5dd210..1b9e454 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -26,12 +26,13 @@ // 初始化人脸相机控制 this->faceCam = new FaceCameraController(this); - bool ok = connect(faceCam, &FaceCameraController::sendImageToDraw, addPersonForm, &AddPersonForm::drawImageOnForm); + connect(faceCam, &FaceCameraController::sendImageToDraw, + addPersonForm, &AddPersonForm::drawImageOnForm); faceCam->openFaceCamera(); - LOG(DEBUG) << "CONNECT OK: " << ok; -// this->faceRegistPro = new FaceDetectRegistProcess(this); -// connect(faceCam, &FaceCameraController::sendImageToDetect, -// faceRegistPro, &FaceDetectRegistProcess::faceDetect); + + this->faceRegistPro = new FaceDetectRegistProcess(this); + connect(faceCam, &FaceCameraController::sendImageToDetect, + faceRegistPro, &FaceDetectRegistProcess::faceDetect); // 打印日志 @@ -54,6 +55,11 @@ } } +AddPersonForm * CasicBioRecWin::getAddPersonFormPtr() +{ + return addPersonForm; +} + void CasicBioRecWin::backToStandByForm() { ui->stacked->setCurrentWidget(startForm); diff --git a/AddPersonForm.cpp b/AddPersonForm.cpp index 94437d8..55cbba0 100644 --- a/AddPersonForm.cpp +++ b/AddPersonForm.cpp @@ -152,14 +152,14 @@ ui->labPhotoEyeRight->setPixmap(QPixmap(":/images/photoEyeRight.png")); } -void AddPersonForm::drawImageOnForm() +void AddPersonForm::drawImageOnForm(QImage imageDisp) { -// if (this->faceLabel->isVisible() == true) -// { - LOG(DEBUG) << "DRAW IMAGE ON FORM ";// << imgDisplay.width() << "*" << imgDisplay.height(); -// imgDisplay = imgDisplay.mirrored(true, false); -// faceLabel->setPixmap(QPixmap::fromImage(imgDisplay)); -// } + if (this->faceLabel->isVisible() == true) + { + LOG(TRACE) << "DRAW IMAGE ON FORM " << imageDisp.width() << "*" << imageDisp.height(); + + faceLabel->setPixmap(QPixmap::fromImage(imageDisp)); + } } bool AddPersonForm::validateForm() @@ -272,11 +272,10 @@ // 1人脸图像显示的容器 faceLabel->resize(1280, 720); faceLabel->move(0, 80); - faceLabel->setStyleSheet("background: rgba(0, 255, 0, 0.5)"); faceLabel->raise(); faceLabel->show(); - LOG(DEBUG) << "FACE IMAGE DOUBLE CLICKED"; + LOG(TRACE) << "FACE IMAGE DOUBLE CLICKED"; } void AddPersonForm::onPhotoIrisDoubleClicked() diff --git a/AddPersonForm.h b/AddPersonForm.h index b9cc49f..e9cc7f3 100644 --- a/AddPersonForm.h +++ b/AddPersonForm.h @@ -3,6 +3,7 @@ #include #include + #include "QDblClickLabel.h" #include "OperationTipsDialog.h" #include "dao/util/CacheManager.h" @@ -29,7 +30,7 @@ void clearPersonInfo(); public slots: - void drawImageOnForm(); + void drawImageOnForm(QImage imageDisp); private slots: void on_btnBack_clicked(); diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index a5dd210..1b9e454 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -26,12 +26,13 @@ // 初始化人脸相机控制 this->faceCam = new FaceCameraController(this); - bool ok = connect(faceCam, &FaceCameraController::sendImageToDraw, addPersonForm, &AddPersonForm::drawImageOnForm); + connect(faceCam, &FaceCameraController::sendImageToDraw, + addPersonForm, &AddPersonForm::drawImageOnForm); faceCam->openFaceCamera(); - LOG(DEBUG) << "CONNECT OK: " << ok; -// this->faceRegistPro = new FaceDetectRegistProcess(this); -// connect(faceCam, &FaceCameraController::sendImageToDetect, -// faceRegistPro, &FaceDetectRegistProcess::faceDetect); + + this->faceRegistPro = new FaceDetectRegistProcess(this); + connect(faceCam, &FaceCameraController::sendImageToDetect, + faceRegistPro, &FaceDetectRegistProcess::faceDetect); // 打印日志 @@ -54,6 +55,11 @@ } } +AddPersonForm * CasicBioRecWin::getAddPersonFormPtr() +{ + return addPersonForm; +} + void CasicBioRecWin::backToStandByForm() { ui->stacked->setCurrentWidget(startForm); diff --git a/CasicBioRecWin.h b/CasicBioRecWin.h index e4ba24d..a10397f 100644 --- a/CasicBioRecWin.h +++ b/CasicBioRecWin.h @@ -30,6 +30,8 @@ FaceCameraController * faceCam; FaceDetectRegistProcess * faceRegistPro; + AddPersonForm * getAddPersonFormPtr(); + public slots: void backToStandByForm(); void switchToUserListForm(); diff --git a/AddPersonForm.cpp b/AddPersonForm.cpp index 94437d8..55cbba0 100644 --- a/AddPersonForm.cpp +++ b/AddPersonForm.cpp @@ -152,14 +152,14 @@ ui->labPhotoEyeRight->setPixmap(QPixmap(":/images/photoEyeRight.png")); } -void AddPersonForm::drawImageOnForm() +void AddPersonForm::drawImageOnForm(QImage imageDisp) { -// if (this->faceLabel->isVisible() == true) -// { - LOG(DEBUG) << "DRAW IMAGE ON FORM ";// << imgDisplay.width() << "*" << imgDisplay.height(); -// imgDisplay = imgDisplay.mirrored(true, false); -// faceLabel->setPixmap(QPixmap::fromImage(imgDisplay)); -// } + if (this->faceLabel->isVisible() == true) + { + LOG(TRACE) << "DRAW IMAGE ON FORM " << imageDisp.width() << "*" << imageDisp.height(); + + faceLabel->setPixmap(QPixmap::fromImage(imageDisp)); + } } bool AddPersonForm::validateForm() @@ -272,11 +272,10 @@ // 1人脸图像显示的容器 faceLabel->resize(1280, 720); faceLabel->move(0, 80); - faceLabel->setStyleSheet("background: rgba(0, 255, 0, 0.5)"); faceLabel->raise(); faceLabel->show(); - LOG(DEBUG) << "FACE IMAGE DOUBLE CLICKED"; + LOG(TRACE) << "FACE IMAGE DOUBLE CLICKED"; } void AddPersonForm::onPhotoIrisDoubleClicked() diff --git a/AddPersonForm.h b/AddPersonForm.h index b9cc49f..e9cc7f3 100644 --- a/AddPersonForm.h +++ b/AddPersonForm.h @@ -3,6 +3,7 @@ #include #include + #include "QDblClickLabel.h" #include "OperationTipsDialog.h" #include "dao/util/CacheManager.h" @@ -29,7 +30,7 @@ void clearPersonInfo(); public slots: - void drawImageOnForm(); + void drawImageOnForm(QImage imageDisp); private slots: void on_btnBack_clicked(); diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index a5dd210..1b9e454 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -26,12 +26,13 @@ // 初始化人脸相机控制 this->faceCam = new FaceCameraController(this); - bool ok = connect(faceCam, &FaceCameraController::sendImageToDraw, addPersonForm, &AddPersonForm::drawImageOnForm); + connect(faceCam, &FaceCameraController::sendImageToDraw, + addPersonForm, &AddPersonForm::drawImageOnForm); faceCam->openFaceCamera(); - LOG(DEBUG) << "CONNECT OK: " << ok; -// this->faceRegistPro = new FaceDetectRegistProcess(this); -// connect(faceCam, &FaceCameraController::sendImageToDetect, -// faceRegistPro, &FaceDetectRegistProcess::faceDetect); + + this->faceRegistPro = new FaceDetectRegistProcess(this); + connect(faceCam, &FaceCameraController::sendImageToDetect, + faceRegistPro, &FaceDetectRegistProcess::faceDetect); // 打印日志 @@ -54,6 +55,11 @@ } } +AddPersonForm * CasicBioRecWin::getAddPersonFormPtr() +{ + return addPersonForm; +} + void CasicBioRecWin::backToStandByForm() { ui->stacked->setCurrentWidget(startForm); diff --git a/CasicBioRecWin.h b/CasicBioRecWin.h index e4ba24d..a10397f 100644 --- a/CasicBioRecWin.h +++ b/CasicBioRecWin.h @@ -30,6 +30,8 @@ FaceCameraController * faceCam; FaceDetectRegistProcess * faceRegistPro; + AddPersonForm * getAddPersonFormPtr(); + public slots: void backToStandByForm(); void switchToUserListForm(); diff --git a/device/FaceCameraController.cpp b/device/FaceCameraController.cpp index bb325a4..5a0420c 100644 --- a/device/FaceCameraController.cpp +++ b/device/FaceCameraController.cpp @@ -1,7 +1,8 @@ #include "FaceCameraController.h" #include #include -#include + +#include "CasicBioRecWin.h" FaceCameraController::FaceCameraController(QObject *parent) : QObject(parent) { @@ -28,8 +29,9 @@ .arg(SettingConfig::getInstance().FACE_FRAME_HEIGHT).toStdString(); // 启动定时器 - TimeCounterUtil::getInstance().faceCapCounter->setInterval(SettingConfig::getInstance().FACE_FRAME_INTERVAL); - TimeCounterUtil::getInstance().faceCapCounter->start(); +// TimeCounterUtil::getInstance().faceCapCounter->setInterval(SettingConfig::getInstance().FACE_FRAME_INTERVAL); +// TimeCounterUtil::getInstance().faceCapCounter->start(); + TimeCounterUtil::getInstance().faceCapCounter->start(SettingConfig::getInstance().FACE_FRAME_INTERVAL); LOG(DEBUG) << QString("[FaceCameraController][openFaceCamera]相机开始拍图[%1ms]") .arg(SettingConfig::getInstance().FACE_FRAME_INTERVAL).toStdString(); } @@ -48,13 +50,22 @@ // clone一个mat, 用于界面显示 cv::Mat faceMatDisp = faceMat.clone(); - QImage imgDisplay = ImageUtil::MatImageToQImage(faceMatDisp); + + cv::Mat imageMatMiir; + flip(faceMatDisp, imageMatMiir, 1); // 左右翻转 + QImage imgDisplay = ImageUtil::MatImageToQImage(imageMatMiir); + + CasicBioRecWin * rootPtr = (CasicBioRecWin *) this->parent(); + if (rootPtr->getAddPersonFormPtr()->isVisible() == 1) + { + rootPtr->getAddPersonFormPtr()->drawImageOnForm(imgDisplay); + } // 发送信号用于界面显示 - emit sendImageToDraw(); +// emit sendImageToDraw(faceMatDisp); - LOG(DEBUG) << " TAKE ONE FACE FRAME " << faceMat.cols << " * " << faceMat.rows; + LOG(DEBUG) << "TAKE ONE FACE FRAME " << faceMat.cols << " * " << faceMat.rows; // 发送信号用于人脸检测和生成特征值 -// emit sendImageToDetect(faceMat); + emit sendImageToDetect(faceMat); } diff --git a/AddPersonForm.cpp b/AddPersonForm.cpp index 94437d8..55cbba0 100644 --- a/AddPersonForm.cpp +++ b/AddPersonForm.cpp @@ -152,14 +152,14 @@ ui->labPhotoEyeRight->setPixmap(QPixmap(":/images/photoEyeRight.png")); } -void AddPersonForm::drawImageOnForm() +void AddPersonForm::drawImageOnForm(QImage imageDisp) { -// if (this->faceLabel->isVisible() == true) -// { - LOG(DEBUG) << "DRAW IMAGE ON FORM ";// << imgDisplay.width() << "*" << imgDisplay.height(); -// imgDisplay = imgDisplay.mirrored(true, false); -// faceLabel->setPixmap(QPixmap::fromImage(imgDisplay)); -// } + if (this->faceLabel->isVisible() == true) + { + LOG(TRACE) << "DRAW IMAGE ON FORM " << imageDisp.width() << "*" << imageDisp.height(); + + faceLabel->setPixmap(QPixmap::fromImage(imageDisp)); + } } bool AddPersonForm::validateForm() @@ -272,11 +272,10 @@ // 1人脸图像显示的容器 faceLabel->resize(1280, 720); faceLabel->move(0, 80); - faceLabel->setStyleSheet("background: rgba(0, 255, 0, 0.5)"); faceLabel->raise(); faceLabel->show(); - LOG(DEBUG) << "FACE IMAGE DOUBLE CLICKED"; + LOG(TRACE) << "FACE IMAGE DOUBLE CLICKED"; } void AddPersonForm::onPhotoIrisDoubleClicked() diff --git a/AddPersonForm.h b/AddPersonForm.h index b9cc49f..e9cc7f3 100644 --- a/AddPersonForm.h +++ b/AddPersonForm.h @@ -3,6 +3,7 @@ #include #include + #include "QDblClickLabel.h" #include "OperationTipsDialog.h" #include "dao/util/CacheManager.h" @@ -29,7 +30,7 @@ void clearPersonInfo(); public slots: - void drawImageOnForm(); + void drawImageOnForm(QImage imageDisp); private slots: void on_btnBack_clicked(); diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index a5dd210..1b9e454 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -26,12 +26,13 @@ // 初始化人脸相机控制 this->faceCam = new FaceCameraController(this); - bool ok = connect(faceCam, &FaceCameraController::sendImageToDraw, addPersonForm, &AddPersonForm::drawImageOnForm); + connect(faceCam, &FaceCameraController::sendImageToDraw, + addPersonForm, &AddPersonForm::drawImageOnForm); faceCam->openFaceCamera(); - LOG(DEBUG) << "CONNECT OK: " << ok; -// this->faceRegistPro = new FaceDetectRegistProcess(this); -// connect(faceCam, &FaceCameraController::sendImageToDetect, -// faceRegistPro, &FaceDetectRegistProcess::faceDetect); + + this->faceRegistPro = new FaceDetectRegistProcess(this); + connect(faceCam, &FaceCameraController::sendImageToDetect, + faceRegistPro, &FaceDetectRegistProcess::faceDetect); // 打印日志 @@ -54,6 +55,11 @@ } } +AddPersonForm * CasicBioRecWin::getAddPersonFormPtr() +{ + return addPersonForm; +} + void CasicBioRecWin::backToStandByForm() { ui->stacked->setCurrentWidget(startForm); diff --git a/CasicBioRecWin.h b/CasicBioRecWin.h index e4ba24d..a10397f 100644 --- a/CasicBioRecWin.h +++ b/CasicBioRecWin.h @@ -30,6 +30,8 @@ FaceCameraController * faceCam; FaceDetectRegistProcess * faceRegistPro; + AddPersonForm * getAddPersonFormPtr(); + public slots: void backToStandByForm(); void switchToUserListForm(); diff --git a/device/FaceCameraController.cpp b/device/FaceCameraController.cpp index bb325a4..5a0420c 100644 --- a/device/FaceCameraController.cpp +++ b/device/FaceCameraController.cpp @@ -1,7 +1,8 @@ #include "FaceCameraController.h" #include #include -#include + +#include "CasicBioRecWin.h" FaceCameraController::FaceCameraController(QObject *parent) : QObject(parent) { @@ -28,8 +29,9 @@ .arg(SettingConfig::getInstance().FACE_FRAME_HEIGHT).toStdString(); // 启动定时器 - TimeCounterUtil::getInstance().faceCapCounter->setInterval(SettingConfig::getInstance().FACE_FRAME_INTERVAL); - TimeCounterUtil::getInstance().faceCapCounter->start(); +// TimeCounterUtil::getInstance().faceCapCounter->setInterval(SettingConfig::getInstance().FACE_FRAME_INTERVAL); +// TimeCounterUtil::getInstance().faceCapCounter->start(); + TimeCounterUtil::getInstance().faceCapCounter->start(SettingConfig::getInstance().FACE_FRAME_INTERVAL); LOG(DEBUG) << QString("[FaceCameraController][openFaceCamera]相机开始拍图[%1ms]") .arg(SettingConfig::getInstance().FACE_FRAME_INTERVAL).toStdString(); } @@ -48,13 +50,22 @@ // clone一个mat, 用于界面显示 cv::Mat faceMatDisp = faceMat.clone(); - QImage imgDisplay = ImageUtil::MatImageToQImage(faceMatDisp); + + cv::Mat imageMatMiir; + flip(faceMatDisp, imageMatMiir, 1); // 左右翻转 + QImage imgDisplay = ImageUtil::MatImageToQImage(imageMatMiir); + + CasicBioRecWin * rootPtr = (CasicBioRecWin *) this->parent(); + if (rootPtr->getAddPersonFormPtr()->isVisible() == 1) + { + rootPtr->getAddPersonFormPtr()->drawImageOnForm(imgDisplay); + } // 发送信号用于界面显示 - emit sendImageToDraw(); +// emit sendImageToDraw(faceMatDisp); - LOG(DEBUG) << " TAKE ONE FACE FRAME " << faceMat.cols << " * " << faceMat.rows; + LOG(DEBUG) << "TAKE ONE FACE FRAME " << faceMat.cols << " * " << faceMat.rows; // 发送信号用于人脸检测和生成特征值 -// emit sendImageToDetect(faceMat); + emit sendImageToDetect(faceMat); } diff --git a/device/FaceCameraController.h b/device/FaceCameraController.h index c75fcda..fb38bf6 100644 --- a/device/FaceCameraController.h +++ b/device/FaceCameraController.h @@ -33,7 +33,7 @@ void getOneFaceFrm(); signals: - void sendImageToDraw(); + void sendImageToDraw(QImage imageDisp); void sendImageToDetect(cv::Mat imgMat); }; diff --git a/AddPersonForm.cpp b/AddPersonForm.cpp index 94437d8..55cbba0 100644 --- a/AddPersonForm.cpp +++ b/AddPersonForm.cpp @@ -152,14 +152,14 @@ ui->labPhotoEyeRight->setPixmap(QPixmap(":/images/photoEyeRight.png")); } -void AddPersonForm::drawImageOnForm() +void AddPersonForm::drawImageOnForm(QImage imageDisp) { -// if (this->faceLabel->isVisible() == true) -// { - LOG(DEBUG) << "DRAW IMAGE ON FORM ";// << imgDisplay.width() << "*" << imgDisplay.height(); -// imgDisplay = imgDisplay.mirrored(true, false); -// faceLabel->setPixmap(QPixmap::fromImage(imgDisplay)); -// } + if (this->faceLabel->isVisible() == true) + { + LOG(TRACE) << "DRAW IMAGE ON FORM " << imageDisp.width() << "*" << imageDisp.height(); + + faceLabel->setPixmap(QPixmap::fromImage(imageDisp)); + } } bool AddPersonForm::validateForm() @@ -272,11 +272,10 @@ // 1人脸图像显示的容器 faceLabel->resize(1280, 720); faceLabel->move(0, 80); - faceLabel->setStyleSheet("background: rgba(0, 255, 0, 0.5)"); faceLabel->raise(); faceLabel->show(); - LOG(DEBUG) << "FACE IMAGE DOUBLE CLICKED"; + LOG(TRACE) << "FACE IMAGE DOUBLE CLICKED"; } void AddPersonForm::onPhotoIrisDoubleClicked() diff --git a/AddPersonForm.h b/AddPersonForm.h index b9cc49f..e9cc7f3 100644 --- a/AddPersonForm.h +++ b/AddPersonForm.h @@ -3,6 +3,7 @@ #include #include + #include "QDblClickLabel.h" #include "OperationTipsDialog.h" #include "dao/util/CacheManager.h" @@ -29,7 +30,7 @@ void clearPersonInfo(); public slots: - void drawImageOnForm(); + void drawImageOnForm(QImage imageDisp); private slots: void on_btnBack_clicked(); diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index a5dd210..1b9e454 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -26,12 +26,13 @@ // 初始化人脸相机控制 this->faceCam = new FaceCameraController(this); - bool ok = connect(faceCam, &FaceCameraController::sendImageToDraw, addPersonForm, &AddPersonForm::drawImageOnForm); + connect(faceCam, &FaceCameraController::sendImageToDraw, + addPersonForm, &AddPersonForm::drawImageOnForm); faceCam->openFaceCamera(); - LOG(DEBUG) << "CONNECT OK: " << ok; -// this->faceRegistPro = new FaceDetectRegistProcess(this); -// connect(faceCam, &FaceCameraController::sendImageToDetect, -// faceRegistPro, &FaceDetectRegistProcess::faceDetect); + + this->faceRegistPro = new FaceDetectRegistProcess(this); + connect(faceCam, &FaceCameraController::sendImageToDetect, + faceRegistPro, &FaceDetectRegistProcess::faceDetect); // 打印日志 @@ -54,6 +55,11 @@ } } +AddPersonForm * CasicBioRecWin::getAddPersonFormPtr() +{ + return addPersonForm; +} + void CasicBioRecWin::backToStandByForm() { ui->stacked->setCurrentWidget(startForm); diff --git a/CasicBioRecWin.h b/CasicBioRecWin.h index e4ba24d..a10397f 100644 --- a/CasicBioRecWin.h +++ b/CasicBioRecWin.h @@ -30,6 +30,8 @@ FaceCameraController * faceCam; FaceDetectRegistProcess * faceRegistPro; + AddPersonForm * getAddPersonFormPtr(); + public slots: void backToStandByForm(); void switchToUserListForm(); diff --git a/device/FaceCameraController.cpp b/device/FaceCameraController.cpp index bb325a4..5a0420c 100644 --- a/device/FaceCameraController.cpp +++ b/device/FaceCameraController.cpp @@ -1,7 +1,8 @@ #include "FaceCameraController.h" #include #include -#include + +#include "CasicBioRecWin.h" FaceCameraController::FaceCameraController(QObject *parent) : QObject(parent) { @@ -28,8 +29,9 @@ .arg(SettingConfig::getInstance().FACE_FRAME_HEIGHT).toStdString(); // 启动定时器 - TimeCounterUtil::getInstance().faceCapCounter->setInterval(SettingConfig::getInstance().FACE_FRAME_INTERVAL); - TimeCounterUtil::getInstance().faceCapCounter->start(); +// TimeCounterUtil::getInstance().faceCapCounter->setInterval(SettingConfig::getInstance().FACE_FRAME_INTERVAL); +// TimeCounterUtil::getInstance().faceCapCounter->start(); + TimeCounterUtil::getInstance().faceCapCounter->start(SettingConfig::getInstance().FACE_FRAME_INTERVAL); LOG(DEBUG) << QString("[FaceCameraController][openFaceCamera]相机开始拍图[%1ms]") .arg(SettingConfig::getInstance().FACE_FRAME_INTERVAL).toStdString(); } @@ -48,13 +50,22 @@ // clone一个mat, 用于界面显示 cv::Mat faceMatDisp = faceMat.clone(); - QImage imgDisplay = ImageUtil::MatImageToQImage(faceMatDisp); + + cv::Mat imageMatMiir; + flip(faceMatDisp, imageMatMiir, 1); // 左右翻转 + QImage imgDisplay = ImageUtil::MatImageToQImage(imageMatMiir); + + CasicBioRecWin * rootPtr = (CasicBioRecWin *) this->parent(); + if (rootPtr->getAddPersonFormPtr()->isVisible() == 1) + { + rootPtr->getAddPersonFormPtr()->drawImageOnForm(imgDisplay); + } // 发送信号用于界面显示 - emit sendImageToDraw(); +// emit sendImageToDraw(faceMatDisp); - LOG(DEBUG) << " TAKE ONE FACE FRAME " << faceMat.cols << " * " << faceMat.rows; + LOG(DEBUG) << "TAKE ONE FACE FRAME " << faceMat.cols << " * " << faceMat.rows; // 发送信号用于人脸检测和生成特征值 -// emit sendImageToDetect(faceMat); + emit sendImageToDetect(faceMat); } diff --git a/device/FaceCameraController.h b/device/FaceCameraController.h index c75fcda..fb38bf6 100644 --- a/device/FaceCameraController.h +++ b/device/FaceCameraController.h @@ -33,7 +33,7 @@ void getOneFaceFrm(); signals: - void sendImageToDraw(); + void sendImageToDraw(QImage imageDisp); void sendImageToDetect(cv::Mat imgMat); }; diff --git a/device/device.pri b/device/device.pri index 99f9438..71d9dfa 100644 --- a/device/device.pri +++ b/device/device.pri @@ -7,7 +7,6 @@ SOURCES += $$PWD/face/FaceDetectRegistProcess.cpp SOURCES += $$PWD/face/CasicFaceRecState.cpp - #HEADERS += $$PWD/IrisCameraController.h #HEADERS += $$PWD/IrisCameraCapEventHandler.h #HEADERS += $$PWD/MotoController.h diff --git a/AddPersonForm.cpp b/AddPersonForm.cpp index 94437d8..55cbba0 100644 --- a/AddPersonForm.cpp +++ b/AddPersonForm.cpp @@ -152,14 +152,14 @@ ui->labPhotoEyeRight->setPixmap(QPixmap(":/images/photoEyeRight.png")); } -void AddPersonForm::drawImageOnForm() +void AddPersonForm::drawImageOnForm(QImage imageDisp) { -// if (this->faceLabel->isVisible() == true) -// { - LOG(DEBUG) << "DRAW IMAGE ON FORM ";// << imgDisplay.width() << "*" << imgDisplay.height(); -// imgDisplay = imgDisplay.mirrored(true, false); -// faceLabel->setPixmap(QPixmap::fromImage(imgDisplay)); -// } + if (this->faceLabel->isVisible() == true) + { + LOG(TRACE) << "DRAW IMAGE ON FORM " << imageDisp.width() << "*" << imageDisp.height(); + + faceLabel->setPixmap(QPixmap::fromImage(imageDisp)); + } } bool AddPersonForm::validateForm() @@ -272,11 +272,10 @@ // 1人脸图像显示的容器 faceLabel->resize(1280, 720); faceLabel->move(0, 80); - faceLabel->setStyleSheet("background: rgba(0, 255, 0, 0.5)"); faceLabel->raise(); faceLabel->show(); - LOG(DEBUG) << "FACE IMAGE DOUBLE CLICKED"; + LOG(TRACE) << "FACE IMAGE DOUBLE CLICKED"; } void AddPersonForm::onPhotoIrisDoubleClicked() diff --git a/AddPersonForm.h b/AddPersonForm.h index b9cc49f..e9cc7f3 100644 --- a/AddPersonForm.h +++ b/AddPersonForm.h @@ -3,6 +3,7 @@ #include #include + #include "QDblClickLabel.h" #include "OperationTipsDialog.h" #include "dao/util/CacheManager.h" @@ -29,7 +30,7 @@ void clearPersonInfo(); public slots: - void drawImageOnForm(); + void drawImageOnForm(QImage imageDisp); private slots: void on_btnBack_clicked(); diff --git a/CasicBioRecWin.cpp b/CasicBioRecWin.cpp index a5dd210..1b9e454 100644 --- a/CasicBioRecWin.cpp +++ b/CasicBioRecWin.cpp @@ -26,12 +26,13 @@ // 初始化人脸相机控制 this->faceCam = new FaceCameraController(this); - bool ok = connect(faceCam, &FaceCameraController::sendImageToDraw, addPersonForm, &AddPersonForm::drawImageOnForm); + connect(faceCam, &FaceCameraController::sendImageToDraw, + addPersonForm, &AddPersonForm::drawImageOnForm); faceCam->openFaceCamera(); - LOG(DEBUG) << "CONNECT OK: " << ok; -// this->faceRegistPro = new FaceDetectRegistProcess(this); -// connect(faceCam, &FaceCameraController::sendImageToDetect, -// faceRegistPro, &FaceDetectRegistProcess::faceDetect); + + this->faceRegistPro = new FaceDetectRegistProcess(this); + connect(faceCam, &FaceCameraController::sendImageToDetect, + faceRegistPro, &FaceDetectRegistProcess::faceDetect); // 打印日志 @@ -54,6 +55,11 @@ } } +AddPersonForm * CasicBioRecWin::getAddPersonFormPtr() +{ + return addPersonForm; +} + void CasicBioRecWin::backToStandByForm() { ui->stacked->setCurrentWidget(startForm); diff --git a/CasicBioRecWin.h b/CasicBioRecWin.h index e4ba24d..a10397f 100644 --- a/CasicBioRecWin.h +++ b/CasicBioRecWin.h @@ -30,6 +30,8 @@ FaceCameraController * faceCam; FaceDetectRegistProcess * faceRegistPro; + AddPersonForm * getAddPersonFormPtr(); + public slots: void backToStandByForm(); void switchToUserListForm(); diff --git a/device/FaceCameraController.cpp b/device/FaceCameraController.cpp index bb325a4..5a0420c 100644 --- a/device/FaceCameraController.cpp +++ b/device/FaceCameraController.cpp @@ -1,7 +1,8 @@ #include "FaceCameraController.h" #include #include -#include + +#include "CasicBioRecWin.h" FaceCameraController::FaceCameraController(QObject *parent) : QObject(parent) { @@ -28,8 +29,9 @@ .arg(SettingConfig::getInstance().FACE_FRAME_HEIGHT).toStdString(); // 启动定时器 - TimeCounterUtil::getInstance().faceCapCounter->setInterval(SettingConfig::getInstance().FACE_FRAME_INTERVAL); - TimeCounterUtil::getInstance().faceCapCounter->start(); +// TimeCounterUtil::getInstance().faceCapCounter->setInterval(SettingConfig::getInstance().FACE_FRAME_INTERVAL); +// TimeCounterUtil::getInstance().faceCapCounter->start(); + TimeCounterUtil::getInstance().faceCapCounter->start(SettingConfig::getInstance().FACE_FRAME_INTERVAL); LOG(DEBUG) << QString("[FaceCameraController][openFaceCamera]相机开始拍图[%1ms]") .arg(SettingConfig::getInstance().FACE_FRAME_INTERVAL).toStdString(); } @@ -48,13 +50,22 @@ // clone一个mat, 用于界面显示 cv::Mat faceMatDisp = faceMat.clone(); - QImage imgDisplay = ImageUtil::MatImageToQImage(faceMatDisp); + + cv::Mat imageMatMiir; + flip(faceMatDisp, imageMatMiir, 1); // 左右翻转 + QImage imgDisplay = ImageUtil::MatImageToQImage(imageMatMiir); + + CasicBioRecWin * rootPtr = (CasicBioRecWin *) this->parent(); + if (rootPtr->getAddPersonFormPtr()->isVisible() == 1) + { + rootPtr->getAddPersonFormPtr()->drawImageOnForm(imgDisplay); + } // 发送信号用于界面显示 - emit sendImageToDraw(); +// emit sendImageToDraw(faceMatDisp); - LOG(DEBUG) << " TAKE ONE FACE FRAME " << faceMat.cols << " * " << faceMat.rows; + LOG(DEBUG) << "TAKE ONE FACE FRAME " << faceMat.cols << " * " << faceMat.rows; // 发送信号用于人脸检测和生成特征值 -// emit sendImageToDetect(faceMat); + emit sendImageToDetect(faceMat); } diff --git a/device/FaceCameraController.h b/device/FaceCameraController.h index c75fcda..fb38bf6 100644 --- a/device/FaceCameraController.h +++ b/device/FaceCameraController.h @@ -33,7 +33,7 @@ void getOneFaceFrm(); signals: - void sendImageToDraw(); + void sendImageToDraw(QImage imageDisp); void sendImageToDetect(cv::Mat imgMat); }; diff --git a/device/device.pri b/device/device.pri index 99f9438..71d9dfa 100644 --- a/device/device.pri +++ b/device/device.pri @@ -7,7 +7,6 @@ SOURCES += $$PWD/face/FaceDetectRegistProcess.cpp SOURCES += $$PWD/face/CasicFaceRecState.cpp - #HEADERS += $$PWD/IrisCameraController.h #HEADERS += $$PWD/IrisCameraCapEventHandler.h #HEADERS += $$PWD/MotoController.h diff --git a/device/face/FaceDetectRegistProcess.cpp b/device/face/FaceDetectRegistProcess.cpp index 3a6748d..82caac5 100644 --- a/device/face/FaceDetectRegistProcess.cpp +++ b/device/face/FaceDetectRegistProcess.cpp @@ -7,6 +7,8 @@ void FaceDetectRegistProcess::faceDetect(cv::Mat faceMat) { + LOG(DEBUG) << "START FACE DETECT" << FACE_DETECT_FLAG; + // 如果已经在人脸检测工作中则退出 if (FACE_DETECT_FLAG == true) {