2013-09-15 8 views
1

Фон:
Я новичок в использовании PIL для Python для обработки фотографий и совсем недавно нашел необходимость в базовой функции обработки фотографий в рамках существующей программы. Моя программа в настоящее время импортирует изображение (эффективно высокое разрешение ночного неба), в котором имеется большая доля черного пространства (очевидно) и несколько ярких белых максимумов.

Вопрос:
Что является лучшим способом определения координат (по отношению к полотну координат, если возможно) каждый максимумы импортированного изображения?

Я просмотрел документацию PIL и нашел способы получить количество пикселей определенного цвета, но, конечно, это не соответствует моим требованиям. Как я уже сказал, я новичок в PIL/Photo-манипуляции с Python, поэтому любая помощь в этом была бы фантастической.

Заранее спасибо! :)Поиск координат Maxima в изображении

ответ

2

Метод 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) 
Смежные вопросы