Преоразмерих кадъра във видео последователност с фактор 10 и работи страхотно. Също така за по-бърз процес Използвайте Face Detector във всеки x
кадър и след това използвайте Face Tracker вместо това в x-1
кадъра между (За да избегнете отклонение).
разгледайте тази връзка: Проследяване срещу откриване
И също така може би примерен код ще помогне на някого (това е просто откриване на не проследяване или разпознаване):
ТОВА Е ПРИМЕР ЗА ANDROID, но е почти подобен в opencv за други платформи и езици
mRgba = inputFrame.rgba();
mGray = inputFrame.gray();
int resizeFactor=10;//or any other number based on your input resolution
Imgproc.resize(mGray,mGray,newSize(mGray.width()/resizeFactor,mGray.height()/resizeFactor));
mRgba = proc(mRgba, mGray,resizeFactor);
И proc функция нещо подобно - намерих и надстроих това от OpenCV4Android Face detection sample:
public Mat proc(Mat mRgba, Mat mGray, int resizeFactor) {
MatOfRect faces = new MatOfRect();
if (mJavaDetector != null)
mJavaDetector.detectMultiScale(mGray, faces, 1.1, 2, 2, new Size(0,0), new Size());//change this according to your usage-> Size(0, 0)
Rect[] facesArray = faces.toArray();
for (Rect rect : facesArray) {
Point t1 = rect.tl();
t1.x *= resizeFactor;
t1.y *= resizeFactor;
Point br = rect.br();
br.x *= resizeFactor;
br.y *= resizeFactor;
Imgproc.rectangle(mRgba, t1, br, FACE_RECT_COLOR, 3);
}
return mRgba;
}
CPU, който използвах: Snapdragon 720G
Също така от свързан форум открих, че LBP е много по-бърз от HAAR. Не съм сигурен за това и за производителността и качеството, но реших, че ще е добре да спомена и тази точка.
person
Shamshirsaz.Navid
schedule
19.03.2021