2009-07-10 7 views
4

私は画像のコレクションを生成しました。彼らの中には、背景が白いので空白のものもあります。私はそれぞれの画像のQImageオブジェクトにアクセスできます。空白の画像をチェックするQtの方法はありますか?そうでない場合は、誰かがPythonでそれを行う最良の方法をお勧めしますか?QtまたはPyQtで空白の画像を確認する方法はありますか?

答えて

5

私はQtのことは知らないが、getextrema方法、たとえば使用PIL でそれを行うための簡単かつ効率的な方法があります:

:ドキュメントから

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

は、

imgetgetrema()=> 2-タプル

01を含む2タプルを返します イメージの最小値と最大値。現行バージョンのPILでは、 これはシングルバンド イメージにのみ適用されます。

+0

コードに入力ミスがあります。実際にはgetextermaではなくgetextremaで、空白がないかどうかをよく確認します。 –

+0

@Thierry、これを指摘してくれてありがとう。一定 –

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__ 
関連する問題