Здравствуйте,
разбираюсь с JavaCV, у меня версия 1.5.3
пытаюсь сделать определение лица, взял пример
тут
Если подключаться к веб камере, то работает нормально. Но как только я подключаюсь к IP камере, то люто лагает, не могу понять почему.
Вот мой код:
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);
}
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber("http://192.168.1.101:8080/video");
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%
В IDE в консоль вылетает сообщение:
[swscaler @ 000000002aeb2000] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 000000002aeb2000] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 000000002aeb2000] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 000000002aeb2000] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 000000002aeb2000] deprecated pixel format used, make sure you did set range correctly
И эта строка вылетает пока работает приложение.
Заранее большое спасибо!