Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему распознавание лица так медленно работает? / 4 сообщений из 4, страница 1 из 1
28.04.2020, 16:47
    #39952428
VaneS Ri_lax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему распознавание лица так медленно работает?
Здравствуйте,
разбираюсь с JavaCV, у меня версия 1.5.3
пытаюсь сделать определение лица, взял пример тут
Если подключаться к веб камере, то работает нормально. Но как только я подключаюсь к IP камере, то люто лагает, не могу понять почему.
Вот мой код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
public static void main(String[] args) {
        try {
            OpenCVFrameConverter.ToMat converter = new OpenCVFrameConverter.ToMat();
            
            CascadeClassifier classifier = new CascadeClassifier("haarcascade_frontalface_default.xml");
            if (classifier == null) {
                System.err.println("ошибка загрузки классификатора.");
                System.exit(1);
            }
            IPCameraFrameGrabber grabber = new IPCameraFrameGrabber("http://192.168.1.101:8080/video", 5, 10, TimeUnit.SECONDS);
            grabber.start();
            
            Frame frame = grabber.grab();
            CanvasFrame canvasFrame = new CanvasFrame("IP camera");
            canvasFrame.setCanvasSize(frame.imageWidth, frame.imageHeight);
            
            Mat grabbedImage = converter.convert(grabber.grab());
            int height = grabbedImage.rows();
            int width = grabbedImage.cols();
            
            Mat grayImage = new Mat(height, width, CV_8UC1);
            Mat rotatedImage = grabbedImage.clone();
            
            RectVector faces = null;
            
            while(canvasFrame.isVisible() && (frame = grabber.grab())!= null){
                grabbedImage = converter.convert(frame);
                //cvtColor(grabbedImage, grayImage, CV_BGR2GRAY);
                
                faces = new RectVector();

////////////////////////////// Из за этого участка кода работает медленно////////////////////////////////////////

                classifier.detectMultiScale(grabbedImage, faces);
                System.out.println(faces.size());
                
                long total = faces.size();
                for(long i = 0; i < total; i++){
                    Rect r = faces.get(i);
                    int x = r.x(), y = r.y(), w = r.width(), h = r.height();
                    rectangle(grabbedImage, new Point(x, y), new Point(x + w, y + h), Scalar.RED, 1, CV_AA, 0);
                }
/////////////////////////////////////////////////////////////////////////////////                
                canvasFrame.showImage(converter.convert(grabbedImage));
                
                
            }
            canvasFrame.dispose();
        } catch (FrameGrabber.Exception ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }


Если тот участок кода убрать и показывать то что захвачено с камеры без определения, то работает отлично.
Может это как то подскажет Вам, но загруженность процессора висит на 100%
Такое чувство что идет где то задержка в секунд 10 примерно.
В качестве IP камеры я использую телефон, на который установил приложение "IP Webcam"
...
Рейтинг: 0 / 0
28.04.2020, 19:14
    #39952511
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему распознавание лица так медленно работает?
Как вариант. У камер очень сильно разное разрешение.
...
Рейтинг: 0 / 0
28.04.2020, 19:51
    #39952538
VaneS Ri_lax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему распознавание лица так медленно работает?
mayton,

Я тоже так подумал, но я пытался выводить frame.imageWidth, frame.imageHeight, показывают один результат, т.е. разрешение одно у двух камер
...
Рейтинг: 0 / 0
28.04.2020, 20:19
    #39952563
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему распознавание лица так медленно работает?
Вот ты написал "люто лагает". Это - не инженерный термин. Он - очень эмоциональный
и не дает никакой подсказки для исследования.

Ты знаком с профайлерами? JProfiler? FlightRecorder? Включай их и смотри их отчот.
Обычно показывают 1 строчку где есть задержка.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему распознавание лица так медленно работает? / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]