如何在Qt或PyQt中检查空白图像?

时间:2009-07-10 15:52:22

标签: python qt4 pyqt4

我已经生成了一系列图片。其中一些是空白的,因为它们的背景是白色的。我可以访问每个图像的QImage对象。是否有Qt方法来检查空白图像?如果没有,有人可以推荐在Python中使用它的最佳方法吗?

2 个答案:

答案 0 :(得分:5)

我不知道Qt,但在PIL中有一种简单有效的方法 使用getextrema方法,例如:

im = Image.open('image.png')
bands = im.split()
isBlank = all(band.getextrema() == (255, 255) for band in bands)

来自文档:

  

im.getextrema()=> 2元组

     

返回包含的2元组   最小值和最大值   图片。在当前版本的PIL中,   这仅适用于单频段   图像。

答案 1 :(得分:1)

好吧,我会计算图片中的颜色。如果只有一个,则图像为空白。我不知道足够的Python或qt为此编写代码,但我确信有一个库可以告诉你图像中有多少颜色(我发布之后我会考虑使用ImageMagick)

更新:以下是使用Image::Magick执行此操作的Perl代码(道歉)。您应该能够使用Python bindings将其转换为Python。

显然,这仅适用于基于调色板的图像。

#!/usr/bin/perl

use strict;
use warnings;

use Image::Magick;

die "Call with image file name\n" unless @ARGV == 1;
my ($file) = @ARGV;

my $image = Image::Magick->new;

my $result = $image->Read( $file );
die "$result" if "$result";

my $colors = $image->Get('colors');

my %unique_colors;

for ( my $i = 0; $i < $colors; ++$i ) {
    $unique_colors{ $image->Get("colormap[$i]") } = undef;
}

print "'$file' is blank\n" if keys %unique_colors == 1;

__END__