Благодаря зрелости технологии распознавания лиц «чистка лица» постепенно стала основной областью применения технологии биометрической идентификации в новую эру.Чтобы удовлетворить потребности современного рынка, распознавание лица EasyCVR также постоянно оптимизируется. Обнаружение ИИ и распознавание снимков людей, транспортных средств, объектов и т. д. в сцене наблюдения.
В распознавании лиц EasyCVR, если в области распознавания есть лицо, его можно распознать напрямую.Если в следующем кадре нет лица, на экране проигрывателя EasyCVR отобразится окно распознавания лиц, как показано ниже:
Однако нецелесообразно, чтобы это поле отображалось, когда нет распознанного контента, поэтому нам нужно удалить это поле и настроить его так, чтобы оно появлялось только при наличии лица, и никакое поле не будет отображаться, если лица нет.
При использовании EasyStreamClient для извлечения потока RTSP сначала инициализируйте декодер и декодируйте полученный I-кадр в yuv (операция на следующем рисунке).
На следующем рисунке показано распознавание лиц и извлечение признаков:
На следующем рисунке показано извлечение признаков Ось X, ось Y, ширина и высота, извлеченные из признака, сохраняются в переменной Rect. Преобразуйте значение в Rect в кадр SEI и передайте его во внешний интерфейс для рисования красной рамки лица.
Код анализа содержит распознавание лица "int(ret.size)>0", поэтому только при обнаружении лица оно будет отправлено обратно во внешний интерфейс для рисования. Если лица нет, пустые данные будут переданы в интерфейс, что приведет только к рамке рисования без отмены действия поля.
Здесь нам нужно добавить в программу операцию else "int(ret.size)>0" для отмены каждого распознанного лица в кадре, а затем отдать его во фронтенд, чтобы кадр плеера исчез.
else {
if client.Flag {
client.Flag = false
s := PacketSei{}
s.Rect = make([]RectSei, int(ret.size))
s.Rect = append(s.Rect, RectSei{
X: 0,
Y: 0,
W: 0,
H: 0,
})
extJson, _ := json.Marshal(s)
base64Str := base64.StdEncoding.EncodeToString(extJson)
//FIXME:debug code
base64Str = string(extJson)
GenSei(uintptr(unsafe.Pointer(&result.sei[0])), &result.seiLen, base64Str)
v := cvrdo.Face{
AiBase: cvrdo.AiBase{
ID: 0,
Name: "",
ParentID: int(client.ChannelId),
CreateTime: time.Now(),
UpdateTime: time.Now(),
},
}
v.AiBase.Name = ""
v.Timestamp = 0
v.ConfidenceLevel = 0
result.face = append(result.face, v)
}
}