使用MATLAB imread函数读取URL图像时指定超时

时间:2011-12-15 17:42:25

标签: matlab timeout

MATLAB imread函数提供从URL读取图像的功能。这通常可行,但偶尔会遇到需要很长时间才能响应的图像。

例如,在发布时,以下网址似乎只是停留在“连接...”状态超过5分钟,然后才最终成功。

http://www.hollywoodheadache.com/wp-content/uploads/2007/12/tom-and-julia.jpg

有什么办法可以在MATLAB中设置超时?

由于

1 个答案:

答案 0 :(得分:1)

我不知道如何使用计时器对象中断imread。此外,我怀疑它的可能性。但我可能会建议您先检查是否可以访问该文件,然后获取该文件。我编写了以下函数来检查文件和Internet状态:

function flag = does_url_exist(urlName) 
    url =java.net.URL(urlName);
    try
        link = openStream(url); 
        parse = java.io.InputStreamReader(link); 
        snip = java.io.BufferedReader(parse); 
        if ~isempty(snip) 
            flag = 1; 
        else 
            flag = 0;
        end 
    catch exception
        flag = 0;
    end
end

然后如下:

fname = 'http://www.hollywoodheadache.com/wp-content/uploads/2007/12/tom-and-julia.jpg';
if(does_url_exist(fname))
    img = imread(fname);
end

请注意,对于互联网连接检查,我从this post获取了初始代码。另请注意,如果您确定该文件存在,则再次检查它是无效的,因为它会增加运行时间。