Как передать изображение тела человека в качестве модели распознавания от лица к лицу
Я использую openvino
обнаружить человека и лицо в кадре. Я был в состоянии обнаружить человека и лицо в кадре. Ниже приведен код для обнаружения:
person_detector.submitFrame(frame, frame_idx);
person_detector.waitAndFetchResults();
face_detector.submitFrame(frame, frame_idx);
face_detector.waitAndFetchResults();
TrackedObjects faceDetection = face_detector.getResults();
TrackedObjects personDetection = person_detector.getResults();
// Draw Bbox for person detection
for (const auto &detection : personDetection) {
cv::rectangle(frame, detection.rect, cv::Scalar(255, 0, 0), 2);
}
// Draw Bbox for face detection
for (const auto &face : faceDetection) {
cv::rectangle(frame, face.rect, cv::Scalar(255, 0, 0), 2);
}
В приведенном выше коде я отправляю кадр person_detector
а также face_detector
и тогда мы получаем результаты, которые мы показываем на кадре.
Теперь мне нужно изменить приведенный выше код, чтобы вместо передачи полного кадра в модель обнаружения лица я просто хотел передать кадр изображения человека, чтобы лицо распознавалось из кадра изображения человека, а не полный кадр из камеры. Для этого я изменил следующие изменения:
person_detector.submitFrame(frame, frame_idx);
person_detector.waitAndFetchResults();
TrackedObjects personDetection = person_detector.getResults();
// Draw Bbox for person detection
for (const auto &detection : personDetection) {
cv::rectangle(frame, detection.rect, cv::Scalar(255, 0, 0), 2);
cv::Mat personImageFrame = frame(detection.rect);
face_detector.submitFrame(personImageFrame , frame_idx);
face_detector.waitAndFetchResults();
TrackedObjects faceDetection = face_detector.getResults();
if (faceDetection.size() > 1)
{
cv::rectangle(personImageFrame, faceDetection[0].rect, cv::Scalar(255, 0, 0), 2);
}
}
В приведенном выше коде я переместил часть обнаружения лица внутрь цикла обнаружения человека для цикла. Здесь я получаю прямоугольник обнаружения человека и преобразовываю это в кадр personImageFrame
а затем передать это модели обнаружения лица и, наконец, отобразить результаты.
Но, следуя вышеизложенному подходу, он способен обнаружить человека, но не может обнаружить лица. Похоже, мне нужно обработать personImageFrame
перед передачей его на модель обнаружения лица, но не уверен, что делать.
В общем, мой вопрос заключается в том, что если мы можем обнаружить человека по кадру, как мы можем передать изображение этого человека только как модель обнаружения по кадру, чтобы лицо было обнаружено по изображению человека, а не по фактическому кадру. Пожалуйста помоги. Спасибо