如何轻松提取图像颜色的百分比?

Tha*_*ama 3 perl colors imagemagick extraction

我需要提取图像的颜色信息,以便能够在稍后基于颜色的百分比搜索图像.我想使用ImageMagick.有任何想法吗?

hob*_*bbs 7

ImageMagick有一个Histogram方法可以返回图像中的颜色列表以及它们出现的频率.它的文档记录很差,界面很糟糕,但我过去使用过它,所以我提供了一些有用的代码:

my @hist_data = $image->Histogram;
my @hist_entries;
# Histogram returns data as a single list, but the list is actually groups of
# 5 elements. Turn it into a list of useful hashes.
while (@hist_data) {
    my ($r, $g, $b, $a, $count) = splice @hist_data, 0, 5;
    push @hist_entries, {
        r => $r,
        g => $g,
        b => $b,
        alpha => $a,
        count => $count,
    };
}
# Sort the colors in decreasing order
@hist_entries = sort { $b->{count} <=> $a->{count} } @hist_entries;
Run Code Online (Sandbox Code Playgroud)

但是,根据你想要做的事情,直方图并不像全彩色图像那样有用,因为相同颜色的阴影会有很多不同的颜色,其中的数量会在直方图.一个有用的预处理步骤是调用$image->Segment(colorspace => 'rgb')图像的克隆,找到相似颜色的区域并用其平均颜色替换整个区域.然后,当您打电话时,Histogram您将看到更少的颜色计数和更具代表性的数据.