2013-11-25 286 views
13

我正在制作一个机器人,它上面会有一个网络摄像头来提供一些简单的对象检测。现在,我想简单地将视频流传输到托管在机器人上的网页,并能够从其他设备上查看它。我已经用Python编写了一个简单的测试脚本(我最终将转向C++,这是我的选择语言),它可以从我的网络摄像头获取流,然后从那里做任何我需要的东西。然后,问题是我无法在应用程序运行时将视频写入文件,它仅在我退出脚本后才写入文件。我已经有一个网络服务器在运行,并且我可以用HTML编写基本代码来承载来自文件的视频,并且所有这些都可以工作。如何将openCV视频流式传输到HTML网页?

总结: Python和/或C++中的openCV2能够使用openCV直播视频吗? 如果没有,你会推荐什么样的库,我尝试将一个CV捕获对象或Mat对象写入一个流,然后我可以把它放在一个网页上? 在HTML中,标记是一个好主意,可以将视频与视频进行比较?

非常感谢您的建议,我可以使用所有的指针*我可以得到!

如果您需要澄清/代码张贴/解释比我给出的更多,请问,我会这么做!

+0

您是否评论过github上提供的任何JavaScript图像/视频工具? CamanJS,Clmtrackr,JS Feat ..可能将矩阵从opencv移植到JS?机器人上的处理器是什么--Rasberry pi,Beaglebone,Intel Edison或更好的东西?也许主板具有全功能的图形卡(真正快速处理帧率...)? – zipzit

+0

嗨,先生!你是如何解决这个问题的,我也有同样的问题。谢谢! –

+0

@BahramdunAdil,技术已经发生了变化...我相信我们现在使用的是OpenCV3,HTTP流和相关协议已经走过了很长的路。我没有一个解决方案可以满足您的需求,但是我建议您尝试一个现有的流媒体视频框架,例如rtmp流媒体。祝你好运! – PyroAVR

回答

1

尝试阅读thisthis

所以基本上你必须使用OpenCV捕获帧并将它们打包成符合流协议的特定格式,然后从你的服务器使用HTML5将它放在页面上。您可能需要使用VLC或FFMepg来打包您的cv :: Mat。希望这会有所帮助。

+0

谢谢,我会试试看。我在一个嵌入式平台(beaglebone)上运行,所以我们将看到如何。我会及时向大家发布! – PyroAVR

+2

你是否设法解决了这个问题? –

2

流帧的问题了OpenCV的和Python在下列线程得到解决: Pipe raw OpenCV images to FFmpeg

这并没有为我工作,但他们声称这为他们做。

它在我的情况下不工作的原因似乎是,对于某些输出帧,额外的字节被添加或丢失,位于capture.py中的输出到stdout和FFMPEG的输入之间。因此,字节数不对应于帧数。我不确定为什么会出现这种情况。我使用Windows 7.

我会好奇听到你的经验,如果你试试这个。我也尝试使用cv2修改capture.py版本,并因相同原因失败。

0

在实验室条件下你发送完整的图像

你似乎是在实验室条件下,所以是一个简单的,但可用的解决方案,使用的WebSockets只是流PNG在Base64编码。在客户端(网络浏览器),您只需接收base64映像并将其直接加载到<img>src中。它适用于实验室场景,虽然速度很慢。

相关问题