【发布时间】:2012-07-04 06:03:57
【问题描述】:
我正在开展一个项目,在该项目中,我们使用无线电调制解调器将数据(视频和遥测)从无人驾驶飞行器传输到地面站。我们需要做的是实时显示视频,并能够知道 C# 中每个遥测数据块对应的帧。
数据被解封装为遥测和视频字节 (mpeg4)。由于我对 OpenCV 有一些经验,我想用它来解码、显示和抓取视频中的点击位置。为此,我使用了名为 Emgu 的 C# 的 OpenCV 包装器。
问题是 OpenCV 从设备或文件加载视频,而我只有一些字节的回调。我已经尝试将这些字节写入一个文件并使用 OpenCV 打开该文件,但是一旦它到达最后,我需要重新打开它并从它停止的地方继续,这会产生延迟。
有人知道怎么做吗?
【问题讨论】:
-
读取文件与读取套接字相同,您应该能够将流附加到读取器,并且它几乎能够即时读取。我想念什么吗?
-
我从回调中接收字节,每次新数据块到达时都会调用该回调。我可以把它们放在一个套接字上,然后像普通文件一样对待它吗?
-
因为您正在从流中读取/写入,所以您可以轻松地将套接字流视为文件。请记住,当您写入/读取文件时,您需要使用流。早在他们创建网络协议时,他们就很聪明,并且变得简单而熟悉。就像我说的,抓取网络流,您可以像文件一样写入/读取其中的所有字节。阅读有关网络编程的一些内容,因为与文件不同,在断开连接之前没有“流结束”。如果您想动态处理数据,一个线程抓取数据,另一个线程对其进行分析,以便实时处理。
-
好的,我会阅读更多关于套接字的内容,并尝试弄清楚如何使用它们来解决这个问题。谢谢!
标签: c# video opencv byte emgucv