我的脚本在模糊选定区域上运行。我需要从 python-fu 脚本中获取所选区域的颜色值。这可以是选择区域的平均值,或者更好的是,用户单击以进行模糊选择的像素的颜色值。
我可以获得选择范围,然后以某种方式在选择范围内获得一个点来利用
pdb.gimp_image_pick_color
。但我不知道如何在任意形状的选区中获取点(最能代表选区的颜色)。
你能帮忙吗?
选区内的点可能很棘手,因为您不知道选区是否是单个连续区域。
有两种方法:
您可以使用
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),所以比平均颜色更亮更红).