有没有办法使用perl对给定图像中特定区域的颜色(知道颜色或颜色范围)进行采样? 让我们说我有200X200的图像,我想在区域X:15中采样颜色(或颜色); Y:30;有没有办法做到这一点?或者是否有任何现有的模块可以使这个易于实现(特别是考虑到图像中有许多区域需要采样并且图像很多)。
谢谢!
佛瑞德
答案 0 :(得分:2)
首先,让我先说明我不了解色彩空间。但是,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;
答案 1 :(得分:0)
我还没有机会测试它,但它看起来像你可以要求处理图像和perl的任何东西。 http://www.graphicsmagick.org/perl.html