IP веб-камера на OpenCV для Java

Я использую приложение IP Webcam для Android и транслирую видео MJPEG через локальный URL-адрес:

http://192.168.0.2:8080/video

Я смог показать видео с помощью проигрывателя VLC и этого фрагмента кода на C++. В OpenCV 2.2 я открыл URL-адрес, используя:

VideoCapture cap;

cap.open("http://192.168.0.2:8080/video?dummy=param.mjpg");

Это работало на C++, но я хочу, чтобы это работало на Java. Мне удалось запустить OpenCV2.4.9 с помощью Java, когда я делал снимки со встроенной веб-камеры. Это мой код для получения изображений с URL-адреса в Java.

System.loadLibrary("opencv_java249");

VideoCapture capture = new VideoCapture();

capture.open("http://192.168.0.2:8080/video?dummy=param.mjpg");

Но Capture.open не открывает потоковую передачу, и я не мог ее правильно отладить. Я знаю, что это может быть проблема с ffmpeg, так как он работает на OpenCV2.2. Я также знаю, что мой OpenCV2.2 специфичен для MS 2010 и может быть более полным.

Поможет ли мне скомпилировать OpenCV2.4.9 из исходников? Есть ли файл, который я мог бы добавить для решения этой проблемы? Есть ли другой способ получить видео с IP-камеры и использовать его в OpenCV?


person Vinicius Nogueira    schedule 19.07.2014    source источник
comment
он будет работать на ПК с 2.4.9, но не на Android (там недоступен ffmpeg).   -  person berak    schedule 19.07.2014
comment
Извините, если это было запутанно. Я не пытаюсь заставить его работать на Android только на Java. Android - это просто контекст, я использую приложение для потоковой передачи данных. Ситуация такова, что у меня есть видео по URL-адресу http, и я хочу получить его на Java с помощью OpenCV. Но почему-то мне не удалось это сделать с OpenCV для Java.   -  person Vinicius Nogueira    schedule 20.07.2014


Ответы (2)


Мне потребовалось время, чтобы понять это. Я не мог получить поток напрямую из OpenCVJava. Я скачал

http://www.mediafire.com/download/ayxwnwnqv3mpg39/javacv-0.7-bin.zip http://www.mediafire.com/download/2rkk0rjwxov7ale/javacv-0.7-cppjars.zip

Я считаю, что это java-оболочка для OpenCV в C. Я взял эту ссылку из этого видео.

http://www.youtube.com/watch?v=mIYaHCyZICI

После распаковки zip я добавил банки в свой проект и использовал этот код:

package javaapplication7;
import java.io.IOException;
import com.googlecode.javacv.OpenCVFrameGrabber;
import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
public class JavaApplication7 {


public static void main(String[] args) throws Exception {

    OpenCVFrameGrabber grabber = new OpenCVFrameGrabber("http://192.168.0.2:8080/video?dummy=param.mjpg"); 
    grabber.setFormat("mjpeg");
    grabber.start();
    for (int k=0; k<20000; k++){
        System.out.print(k);
    }
    IplImage frame = grabber.grab();
    CanvasFrame canvasFrame = new CanvasFrame("Camera");
    canvasFrame.setCanvasSize(frame.width(), frame.height());
    while (canvasFrame.isVisible() && (frame = grabber.grab()) != null) {
        canvasFrame.showImage(frame);
    }
    grabber.stop();
    canvasFrame.dispose();
    System.exit(0);
}
}

Что я получил от:

http://stackoverflow.com/questions/14251290/cvcreatefilecapture-error-could-not-create-camera-capture-with-javacv

Требуется 15-20 секунд, чтобы начать ловить стрим. Но меня впечатлила задержка, которая намного меньше, чем у VLC. Это 1-2 секунды по сравнению с 3-4 секундами на VLC. Я хотел бы проголосовать за парня, у которого я взял ответ, но у меня недостаточно репутации/

person Vinicius Nogueira    schedule 20.07.2014

Я также столкнулся с той же проблемой, что и вы, но самый простой способ, который я понял, - это использовать камеру droid вместо приложения веб-камеры Ip. Проверьте это здесь

person Collins Abitekaniza    schedule 14.11.2015