GIMP - 从 python 脚本中获取选择范围内的点

问题描述 投票:0回答:1

我的脚本在模糊选定区域上运行。我需要从 python-fu 脚本中获取所选区域的颜色值。这可以是选择区域的平均值,或者更好的是,用户单击以进行模糊选择的像素的颜色值。

我可以获得选择范围,然后以某种方式在选择范围内获得一个点来利用

pdb.gimp_image_pick_color
。但我不知道如何在任意形状的选区中获取点(最能代表选区的颜色)。

你能帮忙吗?

gimp python-fu
1个回答
0
投票

选区内的点可能很棘手,因为您不知道选区是否是单个连续区域。

有两种方法:

在选择上使用直方图

您可以使用

pdb.gimp_drawable_histogram
获取所选像素中每个 RGB 通道的直方图值

mean, std_dev, median, pixels, count, percentile=pdb.gimp_drawable_histogram(layer,HISTOGRAM_RED,0.,1.)

在此图像选择中使用调用三次(每个通道一次):

        | Average | Median |  Picker
--------+---------+--------+---------     
  Red   |   44.0  |  44    |    47
Green   |   54.2  |  54    |    56
 Blue   |   43.6  |  43    |    46

在平均模式下使用颜色选择器获得的同一区域的值相差并不远。

使用像素的颜色

  • 您可以使用
    pdb.plug_in_sel2path(image, drawable)
    将您的选择转换为路径。结果是一条被设置为活动的新路径,因此您可以使用
    path=image.active_vectors
  • 获取它
  • 您可以检查
    path.strokes
    中是否有单笔画(否则您的选择是不连续的)。
  • 单路径笔画中锚点的所有坐标列表为:
allX=path.strokes[0].points[0][2::6]
allY=path.strokes[0].points[0][3::6]
  • 如果对这两个列表进行平均,您将获得中心附近像素的坐标(如果选择相当凸,则希望在选择内部)
  • 你可以用
    pdb.gimp_drawable_get_pixel()
    得到这个像素的颜色,但是这个颜色可能和其他的有很大不同(在我上面的测试图像中,中心像素是(54,62,47),所以比平均颜色更亮更红).
© www.soinside.com 2019 - 2024. All rights reserved.