1

我正在尝试开发一个应用程序,其中 Beaglebone 平台从连接到它的摄像头捕获视频图像,然后将它们(通过互联网套接字)发送到 Android 应用程序,以便应用程序显示视频图像。

我已经读过 openCV 可能是从相机捕获图像的一个很好的选择,但是我不确定如何通过套接字发送图像。

另一方面,我认为Android应用程序接收到的视频图像可以用简单的图像来处理。考虑到这一点,我想我可以每秒左右刷新一次图像。

我不确定我的实施方式是否正确,因此我非常感谢您提供的任何建议和帮助。

在此先感谢,格斯。

4

2 回答 2

0

OpenROV 的人已经做了你所说的事情。他们没有使用定制的 Android 应用程序,这当然是可能的,而是简单地使用网络浏览器来显示捕获的图像。

https://github.com/OpenROV/openrov-software

该应用程序使用 OpenCV 执行捕获和分析,使用 Node.JS 应用程序通过 socket.io 将数据传输到 Web 浏览器,并使用 Web 客户端显示视频。此处给出了有关其工作原理的架构描述:

http://www.youtube.com/watch?v=uvnAYDxbDUo

您还可以查看运行类似 mjpg-streamer 的内容:

http://digitalcommons.calpoly.edu/cgi/viewcontent.cgi?article=1051&context=cpesp

于 2012-11-06T18:25:22.450 回答
0

请注意,将视频流显示为一组图像可能会对性能产生很大影响。例如,如果您不注意如何对每个帧进行编码,则可能会使两个系统之间的流量增加一倍以上。ARGB 需要 32 位来编码一个像素,YUV 需要 12 位,因此即使考虑到帧压缩,每帧的存储空间仍然会增加一倍。此外,渲染 ARGB 比渲染 YUV 慢得多,因为大多数 Android 手机实际上都有硬件优化的 YUV 渲染(因为 GPU 可以直接在显存中 blit YUV)。此外,渲染单独的帧作为方法通常使sone采用简单的方法并在画布上渲染位图,如果您对 10-15 fps 的内容感到满意,但它永远无法达到 60 fps,

如果 Beaglebone 板上有硬件 MPEG 编码器,则应该使用它来编码和流式传输视频。这将允许您直接将 MPEG 流传递到标准 Android 媒体播放器进行渲染。当然,使用标准媒体播放器将不允许您实时处理视频流,因此根据您的情况,这可能不适合您。

于 2012-11-06T18:36:01.343 回答