👨💻Полный плейлист по написанию движка для книг-игр на Django
Практический вебинар из 6 частей в формате парного программирования. Повторив действия из видео, вы сможете написать собственный движок для создания и запуска интерактивной книги-игры.
Перейти к плейлисту
#django#python#видео
Курсы Spatial Thoughts и Geospatial Python Tutorials
Spatial Thoughts (https://spatialthoughts.com) — образовательная платформа, основанная Уджавалом Ганди (Ujaval Gandhi). Она предлагает курсы по анализу пространственных данных на Python:
🎓Python Foundation for Spatial Analysis
🎓Mapping and Data Visualization with Python
Материалы курсов бесплатны, за прохождение курса с инструктором придется заплатить.
🔗Дополняет учебные курсы сайт Geospatial Python Tutorials (https://www.geopythontutorials.com). Он содержит примеры применения пакетов GeoPandas, Xarray, Dask, SamGeo и мн. др. для решения практических задач. Вот, например, извлечение информации из нескольких новостей о конфликтах между людьми и слонами в Индии, и геокодирование мест конфликтов — все с помощью ChatGPT.
В качестве среды для работы рекомендуется Google Colab.
#python#ИИ
Анализ видео: визуализация
Последний пост серии, первые два по ссылкам:
1. Подготовка данных
2. Анализ данных
Для виза снова используем cv2. Если данные записаны в таблицу xlsx, то понадобится модуль ast для корректного считывания синтаксиса списков.
При считывании объединяем данные в одномерный список (colors) и создаем пустой массив:
# суммарное число цветов
colors_length = len(colors)
# высота изображения в пикселях
height = 500;
# создаем пустой массив
# height: число строк
# colors_length: число столбцов
# 3: массив цвета (r, g, b)
img_array = np.zeros((height, colors_length, 3), np.uint8)
После этого заполняем массив цветами и с помощью cv2 создаем изображение:
# заполняем массив
for x in range(colors_length):
img_array[:,x] = colors[x]
# записываем в файл
cv2.imwrite('file_name.png', img_array)
Подробнее о параметрах файла палитры и том, как с ним работать, — в карточках.
P.S. И как обычно, полный код этой части в комментариях.
#датавиз#python
Анализ видео: цвет
На прошлом этапе мы записали по одному кадру видео в секунду в список captures_array. Имея данные о кадрах в формате rgb, мы можем определить преобладающие оттенки.
Для этого используем метод кластеризации, а точнее kmeans. Он позволяет разбить массив на нужное число групп по близости значений и выделить их центры (центроиды). Эти значения являются доминирующими оттенками кадра. На мой взгляд, детальность данных будет достаточная, если выделить пять центроидов (k). Этот алгоритм нужно применить в цикле к каждому кадру (capture):
# определяем размеры массива
shape = capture.shape
# пересобираем в одномерный массив
ar = capture.reshape(np.product(shape[:2]), shape[2]).astype(float)
# находим заданное число центроидов
centroids,_ = kmeans(ar, k)
В итоге получаем палитру каждого кадра фильма в хронологическом порядке. Как ее визуализировать, расскажу в следующем посте.
P.S. Полный код оставила в комментариях.
#датавиз#python
Анализ видео: подготовка данных
Я использую python, но общая логика алгоритма может пригодиться и для других языков.
Сначала нужно покадрово считать видео. Сделаем это с помощью библиотеки OpenCV (cv2):
import cv2
# видео целиком
video = cv2.VideoCapture('file_name.mp4')
# частота кадров
fps = int(video.get(cv2.CAP_PROP_FPS))
# число кадров во всем видео
frame_count = int(video.get(cv2.CAP_PROP_FRAME_COUNT))
Теперь можно запустить цикл и собрать один кадр за каждую секунду. В цикле повторяется такой код:
ret, frame = video.read()
Каждую итерацию считывается следующий кадр. В ret записывается информация о корректности считывания (True/False), frame — кадр в формате массива с rgb каждого пикселя.
Имея частоту видео, мы можем записать только один кадр в секунду. Такого объема данных достаточно для анализа. В итоге получаем список с числом кадров равным длительности видео в секундах. Что делать с ним дальше расскажу в следующем посте.
P.S. В комментариях полный код этой части.
#датавиз#python
https://blog.doordash.com/tips-for-building-high-quality-django-apps-at-scale-a5a25917b2b5
Tips for Building High-Quality #Django Apps at Scale:
Be careful about “applications”
Organize your apps inside a package
Explicitly name your database tables
Avoid GenericForeignKey
Keep migrations safe
Squash your migrations
Reduce migration friction
Avoid Fat Models
Be careful with signals
Avoid using the ORM as the main interface to your data
Don’t cache Django models
#learn
🔥 Сегодня
**Moscow Python Meetup**
📅 22 февраля / 18:00 / Москва, ул. Льва Толстого, д.16, конференц-зал «Экстрополис»
💵 Бесплатно
📝 Регистрация тут: https://goo.gl/sqFZUE
53я встреча сообщества Moscow Python. С докладами выступят разработчики из «Лаборатории Касперского», Сбербанка и Яндекса. Они расскажут об asyncio, мобильной разработке на Питоне и о применении JupyterHub.
🔗 Программа: https://goo.gl/kKpQqv
🔗 Сайт: https://goo.gl/8Woxvh
#python#Москва
✅ Завтра
**Moscow Python Meetup**
📅 22 февраля / 18:00 / Москва, ул. Льва Толстого, д.16, конференц-зал «Экстрополис»
💵 Бесплатно
📝 Регистрация тут: https://goo.gl/sqFZUE
53я встреча сообщества Moscow Python. С докладами выступят разработчики из «Лаборатории Касперского», Сбербанка и Яндекса. Они расскажут об asyncio, мобильной разработке на Питоне и о применении JupyterHub.
🔗 Программа: https://goo.gl/kKpQqv
🔗 Сайт: https://goo.gl/y82XG7
#python#Москва