【问题标题】:Sampling color in an image with Perl使用 Perl 对图像中的颜色进行采样
【发布时间】:2011-11-14 17:13:27
【问题描述】:

有没有办法使用 perl 对给定图像中特定区域的颜色进行采样(知道颜色或颜色范围)? 假设我有一个 200X200 的图像,我想对区域 X: 15 中的颜色(或颜色)进行采样; Y:30;。有没有办法做到这一点?或者是否有任何现有的模块可以使其易于实现(特别是考虑到图像中有许多区域可供采样并且有许多图像)。

谢谢!

弗雷德

【问题讨论】:

标签: perl image colors


【解决方案1】:

首先,让我先声明一下,我不了解色彩空间。但是,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;

【讨论】:

    【解决方案2】:

    我还没有机会对此进行测试,但它看起来就像你可以要求处理图像和 perl 的任何东西。 http://www.graphicsmagick.org/perl.html

    【讨论】:

      猜你喜欢
      • 2012-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-08
      • 1970-01-01
      • 2019-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多