문제

이미지 모음을 생성했습니다. 그들 중 일부는 백그라운드에서 흰색처럼 비어 있습니다. 각 이미지의 Qimage 객체에 액세스 할 수 있습니다. 빈 이미지를 확인하는 QT 방법이 있습니까? 그렇지 않다면 누군가 파이썬에서 가장 좋은 방법을 추천 할 수 있습니까?

도움이 되었습니까?

해결책

QT에 대해 모르지만 쉽고 효율적인 방법이 있습니다. 사용 getextrema 방법, 예 :

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

문서에서 :

im.getextrema () => 2- 튜플

이미지의 최소 및 최대 값을 포함하는 2- 튜플을 반환합니다. PIL의 현재 버전에서는 단일 대역 이미지에만 적용됩니다.

다른 팁

글쎄, 나는 이미지의 색상을 계산할 것입니다. 하나만 있으면 이미지가 비어 있습니다. 나는 이것을 위해 코드를 작성하기에 충분한 파이썬이나 QT를 알지 못하지만 이미지에 얼마나 많은 색상이 있는지 알려주는 라이브러리가 있다고 확신합니다 (나는 이것을 게시 한 후에 imagemagick을 사용하여 그것을 살펴볼 것입니다). .

업데이트: 다음은이 작업을 수행하는 Perl 코드 (사과)입니다. 이미지 :: magick. 당신은 그것을 사용하여 파이썬으로 변환 할 수 있어야합니다. 파이썬 바인딩.

분명히 이것은 팔레트 기반 이미지에만 적용됩니다.

#!/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__
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top