Python 求图像中极大值的坐标

Python 求图像中极大值的坐标,python,image,python-2.7,tkinter,python-imaging-library,Python,Image,Python 2.7,Tkinter,Python Imaging Library,背景:我不熟悉使用Python的PIL进行照片处理,最近发现在现有程序中需要一个基本的照片处理功能。我的程序目前导入的图像(实际上是夜空的高分辨率拍摄)中有很大比例的黑色空间(显然)和几个亮白色的最大值。 问题:查找导入图像中每个最大值的坐标(如果可能,相对于画布坐标)的最佳方法是什么? 我查阅了PIL文档,找到了获得某种颜色像素数的方法,但这当然不符合我的要求。正如我所说,我对使用Python进行PIL/照片处理还不熟悉,因此在这方面的任何帮助都将是非常棒的。提前感谢!:) 有一个getext

背景:
我不熟悉使用Python的PIL进行照片处理,最近发现在现有程序中需要一个基本的照片处理功能。我的程序目前导入的图像(实际上是夜空的高分辨率拍摄)中有很大比例的黑色空间(显然)和几个亮白色的最大值。

问题:
查找导入图像中每个最大值的坐标(如果可能,相对于画布坐标)的最佳方法是什么?


我查阅了PIL文档,找到了获得某种颜色像素数的方法,但这当然不符合我的要求。正如我所说,我对使用Python进行PIL/照片处理还不熟悉,因此在这方面的任何帮助都将是非常棒的。

提前感谢!:)

有一个
getextrema()
方法返回每个波段使用的最低和最高图像数据。因此,为了找到最亮的像素,首先需要图像的灰度副本。然后可以迭代图像中的每个像素,并检查每个像素是否具有最高灰度值:

grayscale = image.convert('L')
minima, maxima = grayscale.getextrema()

for width in image.size[0]:
   for height in image.size[1]:
       if grayscale.getpixel((width, height)) == maxima:
            # So here we have one pixel with the highest brightness.
然而,取决于你实际想要达到的目标,可能会有更简单、更有效的方法。例如,如果要在黑色背景上粘贴所有最亮的像素,可以这样做:

grayscale = image.convert('L')
minima, maxima = grayscale.getextrema()
mask = image.point([0] * maxima + [255] * (256 - maxima))

new_image = PIL.Image.new('RGB', image.size)
new_image.paste(image, mask=mask)