Qt 5.7 + Opencv 2.4.9 얼굴 인식 (5) 얼굴 인식
원본 코드 의 다운로드 주소 와 원리 이론 부분 은 아래 로 연결 하 십시오.
http://blog.csdn.net/qq78442761/article/details/71157980
지난 절 은 모델 트 레이 닝 링크 입 니 다. 다음 과 같 습 니 다.
http://blog.csdn.net/qq78442761/article/details/71159508
얼굴 라 이브 러 리 에 이 사람의 데이터 가 없 을 때 식별 결과 캡 처:
이 사람의 데 이 터 를 추가 하면 실행 결과:
식별 과정 에서 사람 이 갑자기 도망 가 거나 사람의 얼굴 정밀도 가 크 지 않 을 때:
여기 서 제 가 이 식별 의 방향 을 설명 하 겠 습 니 다. 레이 블 > = 2 를 훈련 창고 에 있 는 사람 으로 레이 블 > = 2 일 때 + 1 을 식별 합 니 다. 그렇지 않 으 면 - 1 은 모두 20 번 을 식별 하고 그 값 이 12 일 때 식별 에 성공 한 다음 에 레이 블 에 대응 하 는 사람 을 읽 습 니 다.
코드 는 다음 과 같 습 니 다:
void MainWindow::on_action_FaceRecognition_triggered()
{
int label=0;
addpeople.file.getManLabel();
double confidence=0.0;
cv::VideoCapture cap(0); //
if (!cap.isOpened())
{
QMessageBox::warning(this,tr(" "),tr(" "),QMessageBox::Ok);
return;
}
cv::Mat frame;
cv::Mat gray;
cv::CascadeClassifier cascade;
bool stop = false;
// ,
cascade.load("haarcascade_frontalface_alt.xml");
cv::Ptr<:facerecognizer> modelPCA = cv::createEigenFaceRecognizer();
modelPCA->load("MyFacePCAModel.xml");
int sl=0;
while (!stop)
{
cap >> frame;
//
std::vector<:rect> faces(0);
cv::cvtColor(frame, gray, CV_BGR2GRAY);
// ,
//resize(gray, smallImg, smallImg.size(), 0, 0, INTER_LINEAR);
//
cv::equalizeHist(gray, gray);
cascade.detectMultiScale(gray, faces,
1.1, 2,cv::CASCADE_FIND_BIGGEST_OBJECT|cv::CASCADE_DO_ROUGH_SEARCH,
cv::Size(30, 30));
cv::Mat face;
cv::Point text_lb;
for (size_t i = 0; i < faces.size(); i++)
{
if (faces[i].height > 0 && faces[i].width > 0)
{
face = gray(faces[i]);
text_lb = cv::Point(faces[i].x, faces[i].y);
cv::rectangle(frame, faces[i], cv::Scalar(255, 0, 0), 1, 8, 0);
}
}
cv::Mat face_test;
int predictPCA = 0;
if (face.rows >= 120)
{
cv::resize(face, face_test, cv::Size(92, 112));
}
//Mat face_test_gray;
//cvtColor(face_test, face_test_gray, CV_BGR2GRAY);
if (!face_test.empty())
{
// -
int predictedLabel=-1;
predictPCA = modelPCA->predict(face_test);
modelPCA->predict(face_test,predictedLabel,confidence);
qDebug()<20)
{
if(label<5)
QMessageBox::information(this,tr(" "),tr(" "),QMessageBox::Ok);
else
QMessageBox::information(this,tr(" "),tr(" "),QMessageBox::Ok);
return;
}
if(predictPCA!=-1&&predictPCA!=1&&confidence<3200)
label++;
if(predictPCA==1||predictPCA==0)
label--;
qDebug()<12)
{
//qDebug()<= 0)
stop = true;
}
}
이 얼굴 인식 이 끝 났 습 니 다. 다음 절 은 my sql, 얼굴 인식, tcp socket, xml, 3DES 암호 화 를 결합 하여 간단 한 얼굴 인식 시스템 을 만 드 는 것 입 니 다.
소스 코드 와 이론 부분 은 본 박문 의 시작 부분 에서 제공 된다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Qt로 문자와 이미지의 혼합 텍스트 그리기텍스트를 그리려면 QPainter::drawText 함수를 사용하지만 텍스트와 동시에 이미지 (아이콘 등)를 함께 그리기를 원합니다. QLabel와 QPushButton는 이미지와 텍스트를 표시하는 기능을 가지고 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.