Напишите функцию под названием listenToPicture, которая принимает одно изображение в качестве аргумента. Сначала показывает картинку. Далее он будет проходить через каждый 4-й пиксель в каждой 4-й строке и выполнять следующие действия. Он вычислит общее количество красного, зеленого и синего уровней пикселя, разделит его на 9, затем прибавит результат к 24. Это число будет номером ноты, сыгранной playNote.
Это означает, что чем темнее пиксель, тем ниже нота; Чем светлее пиксель, тем выше нота. Эта нота будет воспроизводиться на полной громкости (127) в течение одной десятой секунды (100 миллисекунд). Каждый раз, когда он перемещается в новую строку, он печатает номер строки (значение y) на консоли.
Ваша основная функция попросит пользователя выбрать файл с картинкой. Будет напечатано количество проигрываемых нот (количество пикселей на картинке, деленное на 16; почему?). Затем он вызовет функцию listenToPicture.
Вот что у меня есть, и я не уверен, как настроить циклический просмотр каждого 4-го пикселя в каждой 4-й строке. Любая помощь будет очень признателен.
def main():
pic= makePicture( pickAFile())
printNow (getPixels(pic)/16)
listenToPicture(pic)
def listenToPicture(pic):
show(pic)
w=getWidth(pic)
h=getHeight(pic)
for px in getPixels(pic):
r= getRed(px)
g= getGreen(px)
b= getBlue(px)
tot= (r+g+b)/9
playNote= tot + 24