Vinicius Nogueira
Vinicius Nogueira

Reputation: 55

IP Webcam on OpenCV for Java

I am using IP Webcam APP for android and it is streaming MJPEG video through the local url :

http://192.168.0.2:8080/video

I was able to show the video using VLC player and this piece of code in C++. On the OpenCV 2.2 I opened the url using:

VideoCapture cap;

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

It worked in C++, but I want it to work in Java. I was able to run OpenCV2.4.9 using Java when taking pictures from my built in webcam. This is my code for taking the images from a url in Java.

System.loadLibrary("opencv_java249");

VideoCapture capture = new VideoCapture();

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

But the capture.open does not open the streaming and I could not debug it properly. I know that it might be a issue with the ffmpeg, since it works on OpenCV2.2. I also know that my OpenCV2.2 is specific for MS 2010 and might be more complete.

Would it help if I compile the OpenCV2.4.9 from sources? Is there a file that I could add to solve that problem? Is there another way of receiving the video from the IP camera and using on OpenCV?

Upvotes: 1

Views: 14860

Answers (2)

Collins Abitekaniza
Collins Abitekaniza

Reputation: 4578

I also bumped into the same problem as you but the easiest method i figured out was to use droid cam instead of the Ip webcam app.Check it out here

Upvotes: 0

Vinicius Nogueira
Vinicius Nogueira

Reputation: 55

I took a while to figure it out. I could not receive the stream directly from OpenCVJava.I downloaded

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

Which I believe to be a java wrapper into OpenCV in C. I took this link from this video.

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

After unziping the zip I added the jars into my project and Used this code:

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);
}
}

Which I got from:

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

It takes 15-20 seconds to start catching the streaming. But I was impressed with the delay which is much smaller than VLC. It is 1-2 seconds comparing to 3-4 seconds on VLC. I would like to upvote the guy who I took the answer from but I dont have enough reputation/

Upvotes: 1

Related Questions