java - 如何将 OpenCV WebRTC Stream 导入 Java

标签 java opencv webrtc

我们目前正在开展一个机器人项目,我们希望在该项目中使用 OpenCV 识别元素。该检测已在 OpenCV 中使用视频进行。

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

WebRTC 解决方案是迄今为止最低延迟 200-300 毫秒的解决方案。现在我们希望在 Java 中打开 WebRTC Stream,但是到目前为止我们还做不到。

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

最佳答案

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

  1. 使用 nano 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 更新
$ sudo apt-get install uv4l uv4l-raspicam

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

  1. 在 Windows 计算机上安装 OpenCV 3.0:

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

  1. 在树莓派上运行服务器:
    根据 linux-projects 网站或命令行安装 uv4l-server:
    uv4l --auto-video_nr --driver raspicam --width 640 --height 480 --encoding h264 --server-option '--port=8080'

  2. 连接到流:

    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    Mat image=new Mat();
    VideoCapture 捕获 = 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

关于java - 如何将 OpenCV WebRTC Stream 导入 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35648727/

相关文章:

java - Jetty MultiPartFilter 在上传大文件时抛出 SocketTimeoutException

opencv - Python TypeError:预期为整数参数, float

c# - 动态设置 opentok 中 token 的 EXPIRE_TIME 从 .net 中的当前时间起 15 分钟

java - 如何创建自定义 Intellij 模板 setter 以与 Guava 的 Optional 一起使用

java - 从 MongoDB 整理中获取不需要的输出

java - char 在 eclipse 中未转换为字符串

opencv - 在 Mat opencv 中更改像素值

python - 如何使用 imwrite 从一个文件夹中获取图像并使用 Opencv 将它们保存到另一个文件夹?

javascript - WebRTC、STUN/TURN 在局域网外不工作

debugging - 如何调试 Mobicents 媒体服务器