2017-04-17 93 views
0

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

代码片段:

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.pm line 162。“

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

+0

检查** **许可的'$ ref_files [0]'文件。 – AbhiNickz

+0

它直接将文件名作为字符串提供。所以这不是一个许可问题。 – Maximus

回答

2

错误消息似乎很清楚。

无法读取文件“./”。图像数据:“无法打开./:权限被拒绝

你从opendir()又回到第一个文件是当前目录( .) - Image :: Compare无法从该文件获取想要的图像数据并不奇怪!

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

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

谢谢。这个问题现在已经解决了 – Maximus