Domanda

Ho generato una raccolta di immagini. Alcuni di loro sono in bianco come nel loro sfondo è bianco. Ho accesso all'oggetto QImage di ciascuna delle immagini. C'è un modo Qt per verificare la presenza di immagini vuote? In caso contrario, qualcuno può consigliare il modo migliore per farlo in Python?

È stato utile?

Soluzione

Non so su Qt, ma c'è un modo semplice ed efficace per farlo in PIL Utilizzando il metodo getextrema , esempio:

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

Dalla documentazione:

  

im.getextrema () => 2-tuple

     

Restituisce un 2-tupla contenente il   valori minimi e massimi del   Immagine. Nella versione attuale del PIL,   questo è applicabile solo a banda singola   immagini.

Altri suggerimenti

Bene, vorrei contare i colori dell'immagine. Se v'è una sola, allora l'immagine è vuota. Io non ne so abbastanza Python o qt per scrivere il codice per questo, ma sono sicuro che c'è una libreria che può dirvi quanti colori ci sono in un'immagine (sto andando a considerare di usare ImageMagick per questo subito dopo vi posto questo) .

Aggiornamento: Ecco il codice Perl (scuse) per fare questo usando immagine :: Magick . Si dovrebbe essere in grado di convertirlo in Python utilizzando il Python bindings .

Chiaramente, questo funziona solo per immagini basate tavolozza.

#!/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__
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top