powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему распознавание лица так медленно работает?
4 сообщений из 4, страница 1 из 1
Почему распознавание лица так медленно работает?
    #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
Почему распознавание лица так медленно работает?
    #39952511
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант. У камер очень сильно разное разрешение.
...
Рейтинг: 0 / 0
Почему распознавание лица так медленно работает?
    #39952538
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

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

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


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