Pergunta

I geraram uma coleção de imagens. Alguns deles estão em branco como no seu fundo é branco. Eu tenho acesso ao objeto QImage de cada uma das imagens. Existe uma maneira Qt para verificar se há imagens em branco? Se não, alguém pode recomendar a melhor maneira de fazê-lo em Python?

Foi útil?

Solução

Eu não sei sobre Qt, mas não há uma maneira fácil e eficiente de fazê-lo no PIL Usando o método getextrema , exemplo:

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

A partir da documentação:

im.getextrema () => 2-tuplo

Retorna a 2 tupla contendo o Os valores mínimos e máximos da imagem. Na versão atual do PIL, este só é aplicável a de banda única imagens.

Outras dicas

Bem, eu iria contar as cores da imagem. Se houver apenas um, em seguida, a imagem está em branco. Eu não sei o suficiente Python ou qt para escrever código para isso, mas eu tenho certeza que há uma biblioteca que pode dizer quantas cores existem em uma imagem (eu vou olhar em usar ImageMagick para este logo depois que eu postar isso) .

Update: Aqui está o código Perl (desculpas) para fazer isso usando imagem :: Magick . Você deve ser capaz de convertê-lo em Python utilizando o Python ligações .

Claramente, isso só funciona para imagens com base paleta.

#!/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__
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top