【问题标题】:IP Webcam on OpenCV for JavaOpenCV for Java 上的 IP 网络摄像头
【发布时间】:2014-09-10 15:57:11
【问题描述】:

我正在使用适用于 android 的 IP Webcam APP,它通过本地 url 流式传输 MJPEG 视频:

http://192.168.0.2:8080/video

我能够使用 VLC 播放器和这段 C++ 代码显示视频。 在 OpenCV 2.2 上,我使用以下命令打开了网址:

VideoCapture cap;

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

它在 C++ 中工作,但我希望它在 Java 中工作。从我的内置网络摄像头拍照时,我能够使用 Java 运行 OpenCV2.4.9。这是我从 Java 中的 url 获取图像的代码。

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 上使用?

【问题讨论】:

  • 在 2.4.9 的电脑上工作,但在 android 上不工作(ffmpeg 在那里不可用)。
  • 很抱歉,如果它令人困惑。我并不想让它只在 Java 上运行在 android 上。 android 只是上下文,我正在使用应用程序来传输数据。情况是我在 http url 上有一个视频,我想使用 OpenCV 在 Java 上接收。但不知何故,我无法使用 OpenCV for Java 做到这一点。

标签: java opencv ffmpeg video-streaming ip-camera


【解决方案1】:

我花了一段时间才弄明白。我无法直接从 OpenCVJava 接收流。我下载了

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

我认为这是 C 语言中 OpenCV 的 java 包装器。我从该视频中获取了此链接。

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

解压缩 zip 后,我将 jar 添加到我的项目中并使用了以下代码:

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

我来自:

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

开始捕捉流媒体需要 15-20 秒。但我对比 VLC 小得多的延迟印象深刻。与 VLC 上的 3-4 秒相比,它是 1-2 秒。我想投票给我回答的那个人,但我没有足够的声誉/

【讨论】:

    【解决方案2】:

    我也遇到了和你一样的问题,但我想出的最简单的方法是使用 droid cam 而不是 Ip 网络摄像头应用程序。查看here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-25
      • 2012-06-12
      • 2015-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多