我们目前正在开展一个机器人项目,我们希望在该项目中使用 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 毫秒:
- 使用 nano wlan 适配器创建 WLAN 热点:
我们使用了 Edimax EW-7811Un
在树莓派上安装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
- 在 Windows 计算机上安装 OpenCV 3.0:
根据本教程,我们使用安装在 ecplise 中的 OpenCV: http://docs.opencv.org/3.0-beta/doc/tutorials/introduction/java_eclipse/java_eclipse.html
在树莓派上运行服务器:
根据 linux-projects 网站或命令行安装 uv4l-server:
uv4l --auto-video_nr --driver raspicam --width 640 --height 480 --encoding h264 --server-option '--port=8080'连接到流:
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/