1

我想通过将图像存储在一台计算机上并在互联网上使用 Matlabsimread功能将它们作为另一台计算机上的 URL 读取来在两台计算机之间流式传输图像。

我目前正在通过在其中一台计算机上的网络摄像头创建一个 png 图像流来做到这一点。这连接到可通过公共网络地址访问的网络驱动器。

在另一台计算机上,我只是像这样运行一个循环:

while 1
 I = imread('http://mywebaddress.blah/image.png');
 imshow(I);
 drawnow
end

问题是这适用于大约 3 或 4 帧,然后使 Matlab 崩溃。它不会抛出异常,它只是崩溃。

我猜这是因为在 Matlab 的基于 URL 的图像的 imread 代码中没有考虑同步错误。所以我猜如果图像在流式传输时只有一半可用并且由于它在另一侧被覆盖而停止可用,那么Matlab没有考虑到这一点并且它会爆炸。

我需要一个简单的同步机制。第二台计算机只能读取信息。它无法发送信息。显然同步不会是完美的,但我喜欢一种方法,它会导致绝对最小的崩溃......有没有人有任何想法?

4

1 回答 1

2

我认为您需要在服务器端解决此问题。例如,我可以看到您如何拥有image00.png通过命名的 10 个最新图像image09.png。现在,您无需覆盖当前提供的图像,而是提供“currentImage.png”,它是指向最新图像的链接。每当创建新图像时,您都会更新链接,现在在图像被覆盖之前,您有 10 倍的时间来读取图像。显然,您可以根据更新图像的频率和读取延迟来创建更深的“缓冲区”。

如果不清楚,请告诉我,我可以尝试详细说明。

于 2013-05-10T02:47:52.813 回答