使用Perl读取和比较文件夹中的图像

时间:2017-04-17 09:40:37

标签: perl scripting

我正在尝试阅读和比较文件夹中的大量图像文件。但我无法读取图像文件。

代码段:

use strict;
use warnings;
use Image::Compare;

opendir my $ref_dir, "./" or die "Cannot open directory: $!";
my @ref_files = readdir $ref_dir;
closedir $ref_dir;

print $#ref_files;

my($cmp) = Image::Compare->new();


$cmp->set_image1(
        img  => './'.$ref_files[0],  #one instance - reading first file in the folder
        type => 'bmp',
    );

代码抛出以下错误 - “无法从文件中读取图像数据./。':'无法在C:/ Perl64 / site / lib / Image / Compare中打开./:Permission denied'。下午线162.“

如果我直接提供文件名,代码工作正常 - img => './image.bmp'。所以这不是一个许可问题。

1 个答案:

答案 0 :(得分:2)

错误信息似乎很清楚。

  

无法从文件'./。'中读取图像数据:'无法打开./。:Permission denied

您从opendir()返回的第一个文件是当前目录(.) - 并且Image :: Compare无法从中获取所需的图像数据也就不足为奇了文件!

也许你应该添加一个过滤器,只返回你感兴趣的文件。

my @ref_files = grep { -f } readdir $ref_dir;