Содержание
- 2. А на прошлом уроке было… Разбор ошибок и задания на закрепление прошедшего материала
- 3. Python Imaging Library (PIL) Возможности библиотеки: поддержка бинарных, полутоновых, индексированных, полноцветных и CMYK изображений; поддержка форматов
- 4. Делаем отражения изображения Возьмем в качестве примера стандартное тестовое изображение «Лена» Вертикальное отражение for i in
- 5. Горизонтальное отражение for i in range(x): for j in range(y // 2): pixels[i, j], pixels[i, y
- 6. Отражение относительно главной диагонали for i in range(x): for j in range(i): pixels[i, j], pixels[j, i]
- 7. Отражение относительно побочной диагонали for i in range(x): for j in range(x - i): pixels[j, i],
- 8. Напишите функцию twist_image(input_file_name, output_file_name), которая будет менять местами правую верхнюю и левую нижнюю четверти изображения. Параметр
- 9. from PIL import Image def twist_image(input_file_name, output_file_name): im = Image.open(input_file_name) pixels = im.load() x, y =
- 10. А теперь будем менять местами правую нижнюю и левую верхнюю четверти изображения
- 11. from PIL import Image def twist_image(input_file_name, output_file_name): im = Image.open(input_file_name) pixels = im.load() x, y =
- 12. А если хочется что-нибудь самому нарисовать? Для рисования на изображении используется объект Draw из библиотеки ImageDraw.
- 13. draw = ImageDraw.Draw(new_image) На холсте создаем место, где будет создан рисунок from PIL import Image, ImageDraw
- 14. На черном квадрате размерность 200* 200 разместить три квадрата размера 50*50 – красный, начинающийся в левом
- 15. На черном фоне нарисуем синюю вертикальную линию со сдвигом 50 от левого края. Холст – квадрат
- 16. Нарисуем дугу между начальными и конечными углами, внутри данной ограничительной области from PIL import Image, ImageDraw
- 17. from PIL import Image, ImageDraw new_image = Image.new("RGB", (600, 200), (0, 0, 0)) draw = ImageDraw.Draw(new_image)
- 18. На черном квадрате размерность 200* 200 разместить три круга размера 50*50 – красный, начинающийся в правом
- 19. from PIL import Image, ImageDraw new_image = Image.new("RGB", (300, 300), (0, 0, 0)) draw = ImageDraw.Draw(new_image)
- 20. В середине предыдущего рисунка разместить красный круг from PIL import Image, ImageDraw new_image = Image.new("RGB", (300,
- 21. Шахматная доска from PIL import Image, ImageDraw Импортируем из библиотеки необходимые объекты def board(num, size): new_image
- 22. for x in range(num): for y in range((x + 1) % 2, num, 2): draw.rectangle((x *
- 23. Красивое имя Напишите программу, которая красиво рисует имя своего автора. Каждую букву надо нарисовать с помощью
- 24. from PIL import Image, ImageDraw new_image = Image.new('RGB', (700, 300), (0, 0, 0)) Импортируем из библиотеки
- 25. color = ['red', 'gray', 'magenta', 'white', 'cyan', 'blue'] for i in range(6): draw.rectangle((125, i * 50,
- 26. Букву «М» будем делать с помощью кружков разного цвета Для этого используем объект эллипс - draw.ellipse
- 27. Букву «А» нарисуем с помощью трех линий draw.line(((550, 300), (650, 0)), 'cyan', 20) draw.line(((650, 300), (650,
- 28. Библиотеки. Часть № 3 (графика + звук) Применение фильтров к изображению. Модуль wave для работы со
- 29. Фильтры Давайте применим фильтры к нашей старой знакомой Риане. Искомое изображение находится в папке с программами
- 30. Сделаем изображение черно-белым from PIL import Image im = Image.open('image.jpg') pixels = im.load() x, y =
- 31. Поменяем местами зелёный и синий каналы for i in range(x): for j in range(y): r, g,
- 32. Высветлить компонент Во многих графических редакторах (включая Photoshop) есть инструмент Кривые (Curves). Он позволяет задать функцию,
- 33. def curve(pixel): r, g, b = pixel brightness = r + g + b if brightness
- 34. Работа со звуком. Модуль wave Фильтры можно накладывать не только на изображение, но и на звуковые
- 35. Создадим программу, которая будет разворачивать звуковой файл в обратную сторону, то есть проигрывать задом наперед Будем
- 36. Модуль struct позволяет паковать и извлекать несколько значений в бинарные структуры. Это чем-то похоже на структуры
- 37. import wave import struct source = wave.open("in.wav", mode="rb") dest = wave.open("out.wav", mode="wb") dest.setparams(source.getparams()) # найдем количество
- 38. Некоторые наблюдения Если убрать , например, каждый второй фрейм, то ускорим произведение вдвое. При этом частота
- 39. Библиотеки Python. Numpy. Часть 3 Клеточные автоматы
- 40. Клеточные автоматы. Игра «Жизнь» Клеточный автомат — это модель однородного пространства с некоторыми клетками. Каждая клетка
- 41. Правила Если клетка была живой, то она выживет, если у неё 2 или 3 соседа. Если
- 42. Программируем игру «Жизнь» import numpy as np population = np.array( [[0, 0, 0, 0, 0, 0,
- 43. Невозможно обеспечить бесконечность в обоих направлениях, поэтому замкнём поле само на себя. Если выйти за нижнюю
- 44. [[0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0
- 45. [[0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0
- 46. Можем посчитать количество соседей у каждой клетки, просто сделав 8 копий со сдвигом массива и просуммировав
- 47. Генерируем новую популяцию Выполним на матрице следующую операцию: «если у клетки 3 соседа, то в следующем
- 48. Была жизнь и имеется ровно два соседа population & (neighbors == 2) [[0 0 0 0
- 49. population = (neighbors == 3) | (population & (neighbors == 2)) Объединим эти два условия [[0
- 50. Проследим эволюцию глайдера на протяжении 4 поколений. Для этого создадим функцию next_population() def next_population(population): neighbors =
- 51. [[0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0
- 52. Задание numpy. Одномерный клеточный автомат Ограничение времени 100 секунд Ограничение памяти 64Mb Ввод стандартный ввод или
- 53. Правило эволюции дано в верхней части рисунка. Цвет каждой ячейки текущего поколения определяется сочетанием цветов трёх
- 54. Подсказка import numpy as np Импортируем библиотеку под псевдонимом np rules = { (0, 0, 0):
- 55. def generation(line): Собственно напишем функцию s = np.array([int(i) for i in line]) size = len(s) На
- 57. Скачать презентацию