Выборка цвета на изображении с помощью Perl - PullRequest
1 голос
/ 14 ноября 2011

Есть ли способ сэмплировать цвет (узнать, что это за цвет или диапазон цветов) в определенной области данного изображения, используя perl? Допустим, у меня есть изображение 200X200, и я хочу попробовать цвет (или цвета) в области X: 15; Y: 30 ;. Есть ли способ сделать это? Или есть какой-либо существующий модуль, который мог бы сделать это простым в реализации (особенно если учесть, что в изображении много областей для выборки и много изображений).

Спасибо!

Fred

Ответы [ 2 ]

2 голосов
/ 15 ноября 2011

Во-первых, позвольте мне заявить заранее, что я не понимаю цветовые пространства.Тем не менее, GD позволит легко получить группу пикселей из растрового изображения.

#!/usr/bin/env perl

use strict;
use warnings;

use GD;

my $img = GD::Image->new('Palisades-woods.jpg');

my ($width, $height) = $img->getBounds;

my $sample_left = $width  / 2 - 10;
my $sample_top  = $height / 2 - 10;
my $sample_width = my $sample_height = 20;

my $n = 0;
my $avg = 0;

for my $y (0 .. $sample_height - 1) {
    for my $x (0 .. $sample_width - 1) {
        my ($r, $g, $b) = $img->rgb( $img->getPixel($x, $y));
        my $rgb =  ($r << 16) + ($g << 8) + $b;
        $avg = ($n * $avg + $rgb) / ($n + 1);
        $n += 1;
    }
}

printf "Average rgb is #%06X\n", $avg;
0 голосов
/ 14 ноября 2011

У меня еще не было возможности проверить это, но, похоже, это все, что вы могли бы попросить иметь дело с изображениями и perl.http://www.graphicsmagick.org/perl.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...