如何获取OpenCV WebRTC Stream到Java中



我们目前正在做一个机器人项目,我们想用OpenCV识别元素。检测已经在带有视频的OpenCV中起作用。

对于硬件,我们使用带有Raspcam的Raspberry Pi B2。经过长时间的搜索,延迟最小,我们找到了 http://www.linux-projects.org/modules/sections/index.php?op=viewarticle&artid=14

WebRTC解决方案是迄今为止滞后最低的200-300ms解决方案。现在我们希望在Java中打开WebRTC Stream,但是到目前为止我们还没有做到。

任何指示我们如何在Java中的OpenCV中打开WebRTC流?

对于任何对此感兴趣的人,我们如何能够通过 h264 流连接 OpenCV,并通过 WLAN 延迟 200-300 毫秒:

  1. 使用纳米 WLAN 适配器创建 WLAN 热点:
    我们使用了Edimax EW-7811Un

按照以下位置的教程进行操作:
http://www.daveconroy.com/turn-your-raspberry-pi-into-a-wifi-hotspot-with-edimax-nano-usb-ew-7811un-rtl8188cus-chipset/

  1. 在树莓派上安装 uv4l:

    $ curl http://www.linux-projects.org/listing/uv4l_repo/lrkey.asc | sudo apt-key add -

将以下行添加到文件/etc/apt/sources.list 中:

deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/ wheezy main

$ sudo apt-get update
$ sudo apt-get install uv4l uv4l-raspicam

此处的详细说明和文档:http://www.linux-projects.org/modules/sections/index.php?op=viewarticle&artid=14

  1. 安装 OpenCV 3.0 auf Windows 计算机:

根据本教程,我们使用安装在ecplise 中的 OpenCV:http://docs.opencv.org/3.0-beta/doc/tutorials/introduction/java_eclipse/java_eclipse.html

  1. 在树莓派上运行服务器:
    根据 linux-projects 网站或命令行安装 uv4l 服务器
    UV4L --自动video_nr --驱动程序拉斯皮卡姆 --宽度 640 --高度 480 --编码 H264 --服务器选项"--端口=8080"

  2. 连接到流:

    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    垫子图像=新垫子();
    VideoCapture capture = new VideoCapture();
    capture.open("http://IPADDRESSofRaspberry:8080/stream/video.h264");
    捕获.读取(图像);

重要提示和潜在错误:

查看 uv4l 的文档以了解速度和分辨率。我们选择了 640x480 @ 30fps。
如果要检查流是否正在加载,可以在VLC媒体播放器中打开它,但是请确保设置正确的解复用器:http://www.stardot-tech.com/kb/index.php?View=entry&EntryID=186

你看看这个吗:http://www.rs-online.com/designspark/electronics/blog/building-a-raspberry-pi-2-webrtc-camera

另一种选择是使用中央MCU(检查Medooze/McuWeb项目),这个想法是通过Websockets/SIP连接Raspberry该流将被混合到MCU中,然后您可以生成一个额外的流返回到任何服务器(例如:Wooza),您可以在其中应用OpenVC。为什么需要Java?

最新更新