Резко пришла идея написать программу, для распознавания среднего цвета на фотографиях.
Код был написан буквально за 15 минут, так что, если нашли какие то минусы, то пишите, исправлю.
Суть программы: на выход дать средний цвет и фото out.jpg
Пусть входное фото:
Тогда при запуске программы, мы вводим его имя с расширением, и получаем rgb и hex для среднего цвета, и цвета фона:
Цвет фона используется дальше, для выходного изображения, он на 10 единиц темнее среднего:
Для написания кода использовал библиотеку PIL:
from PIL import Image
print('Перед вводом названия файла перекиньте его в папку с программой')
print('Примечание: программа плохо работает с форматом .png')
picture_name = str(input('Введите название фото с его расширением: '))
try:
img = Image.open(picture_name) #Файл для перебора
obj_for_count = img.load()
f = open(picture_name, "rb") #Файл для размера
img_for_size = Image.open(f)
sq = [0, 0, 0] #Массив для общего подсчета
count = img_for_size.size[0] * img_for_size.size[1] #Ширина * Высота
width = img_for_size.size[0] #Ширина
height = img_for_size.size[1] #Высота
f.close
for i in range(width): #Цикл по ширине
for j in range(height): #Цикл по высоте
sq[0] += obj_for_count[i, j][0] #r
sq[1] += obj_for_count[i, j][1] #g
sq[2] += obj_for_count[i, j][2] #b
out = [0, 0, 0] #Массив для средних значений
out[0] = int(sq[0]/count) #Средние значения
out[1] = int(sq[1]/count)
out[2] = int(sq[2]/count)
print(f'Средний цвет: rgb({out[0]}, {out[1]}, {out[2]})')
hexed = '#' + format(out[0], 'x') + format(out[1], 'x') + format(out[2], 'x') #Перевод в HEX
print(f'hex: {hexed}')
for i in range(len(out)): #Делаю цвет фона на 10 пунктов темнее
if out[i] <= 10:
out[i] = 0
else:
out[i] -= 10
print(f'Цвет фона: rgb({out[0]}, {out[1]}, {out[2]})')
hexed = '#' + format(out[0], 'x') + format(out[1], 'x') + format(out[2], 'x') #Перевод в HEX
print(f'hex: {hexed}')
img_for_out = Image.new("RGB", (int(width*1.5), int(height*1.5)), (out[0], out[1], out[2])) #Создание файла widthхheight с фоном среднего цвета
img_for_out.paste(img, (int(width/4), int(height/4)))
img.close
img_for_out.save('out.jpg') #Запись файла в папку
img_for_out.show() #Показ файла
img_for_out.close
except:
print('ERROR: Файл не найден')
Программа плохо работает с форматом .png: