<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>@python_lounge</title><generator>teletype.in</generator><description><![CDATA[@python_lounge]]></description><link>https://teletype.in/@python_lounge?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_lounge</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/python_lounge?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/python_lounge?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Fri, 19 Jun 2026 09:15:54 GMT</pubDate><lastBuildDate>Fri, 19 Jun 2026 09:15:54 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@python_lounge/olymptask</guid><link>https://teletype.in/@python_lounge/olymptask?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_lounge</link><comments>https://teletype.in/@python_lounge/olymptask?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_lounge#comments</comments><dc:creator>python_lounge</dc:creator><title>Олимпиадная задача про словарь</title><pubDate>Thu, 08 Apr 2021 08:26:25 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/6e/26/6e26f0d2-0ca0-4dd8-8685-d5d3cf1dba10.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/a6/85/a685e388-ee1f-4d0b-9fb9-367aee1e6325.png"></img>Я вижу, что вам больше нравится практика, нежели теория :)]]></description><content:encoded><![CDATA[
  <p>Я вижу, что вам больше нравится практика, нежели теория :)</p>
  <p>Сегодня я разберу одну из олимпиадных задач, довольно простую.</p>
  <figure class="m_column">
    <img src="https://teletype.in/files/a6/85/a685e388-ee1f-4d0b-9fb9-367aee1e6325.png" width="1200" />
  </figure>
  <p>Суть задачи в том, чтобы из англо-латинского словаря сделать латино-английский.</p>
  <p><strong>Примеры тестов</strong></p>
  <blockquote>Входные данные</blockquote>
  <blockquote>3<br />apple - malum, pomum, popula<br />fruit - baca, bacca, popum<br />punishment - malum, multa</blockquote>
  <blockquote>Выходные данные</blockquote>
  <blockquote>7<br />baca - fruit<br />bacca - fruit<br />malum - apple, punishment<br />multa - punishment<br />pomum - apple<br />popula - apple<br />popum - fruit</blockquote>
  <p>Входные данные черпаются из input.txt, вывод сбрасывается в output.txt. Довольно стандартное требование.<br />Входные данные лексикографически отсортированы, и выходные данные тоже требуются отсортированными.</p>
  <p>Вначале я покажу своё решение, потом начну объяснять. Итак, моё решение:</p>
  <blockquote>f = open(&#x27;input.txt&#x27;)<br />N = f.readline()<br />d = {}<br /><strong>for</strong> line <strong>in</strong> f:<br />words = line.strip().split(&#x27; - &#x27;)<br />en = words[0]<br />lat = words[1].split(&#x27;, &#x27;)<br /><strong>for</strong> key <strong>in</strong> lat:<br /><strong>if</strong> key <strong>in</strong> d:<br />d[key].append(en)<br /><strong>else</strong>:<br />d[key] = [en]<br />f.close()</blockquote>
  <blockquote><strong>for</strong> key <strong>in</strong> d:<br />d[key].sort()</blockquote>
  <blockquote>g = open(&#x27;output.txt&#x27;, &#x27;w&#x27;)<br />g.write(str(len(d)) + &#x27;<strong>\n</strong>&#x27;)<br /><strong>for</strong> lat <strong>in</strong> sorted(d):<br />g.write(lat + &#x27; - &#x27; + &#x27;, &#x27;.join(d[lat]) + &#x27;<strong>\n</strong>&#x27;)</blockquote>
  <blockquote>g.close()</blockquote>
  <p>А теперь объяснение. Приготовились... :)</p>
  <p>Открываем файл, читаем число N (оно нам не понадобится); создаём пустой словарь.</p>
  <p>Отделяем слово от его переводов; из строки с переводами получаем список латинских слов.</p>
  <p>Далее смотрим, есть ли латинское слово в нашем словаре. Если есть - дописываем ещё один английский перевод. Если нет - пишем его. После махинаций закрываем файл. Далее нужно все списки переводов отсортировать (требования задачи).</p>
  <p>Открываем файл на запись. Первой строкой записываем число получившихся слов. Далее в отсортированном порядке записываем латинские слова, затем их переводы. Закрываем файл.</p>
  <p>Задача решена, все тесты пройдены.</p>
  <p>Несомненно, возможны и другие решения, но это мне показалось наиболее красивым.<br /><br />Наш <a href="https://t.me/joinchat/TbrMYzijgX7FmYOV" target="_blank">уютный чат</a>, где мы обсуждаем Python<br /><br />Подписывайтесь на наши каналы: <br />Python <a href="https://t.me/python_lounge" target="_blank">@python_lounge</a><br />Программирование <a href="http://t.me/cccoding" target="_blank">@cccoding</a><br />ИТ Безопасность <a href="http://t.me/it_ha" target="_blank">@it_ha<br /><br /></a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@python_lounge/top10mlproject</guid><link>https://teletype.in/@python_lounge/top10mlproject?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_lounge</link><comments>https://teletype.in/@python_lounge/top10mlproject?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_lounge#comments</comments><dc:creator>python_lounge</dc:creator><title>Примеры проектов по машинному обучению — 10 лучших</title><pubDate>Thu, 11 Mar 2021 12:25:04 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/5e/11/5e11876d-0b59-433a-956a-ac5111dc2b3f.png"></media:content><description><![CDATA[<img src="https://avatars.mds.yandex.net/get-zen_doc/1677529/pub_5e805b53862a504fb17acce0_5e805b7f6300d51ddf2f2d2c/scale_1200"></img>Обучение искусственного интеллекта — задача непростая, но затраченные усилия сполна окупятся невероятными результатами, которых можно достичь благодаря ИИ. Хотите узнать больше о самых классных проектах по машинному обучению? Читайте нашу подборку.]]></description><content:encoded><![CDATA[
  <figure class="m_custom">
    <img src="https://avatars.mds.yandex.net/get-zen_doc/1677529/pub_5e805b53862a504fb17acce0_5e805b7f6300d51ddf2f2d2c/scale_1200" width="1200" />
  </figure>
  <p>Обучение искусственного интеллекта — задача непростая, но затраченные усилия сполна окупятся невероятными результатами, которых можно достичь благодаря ИИ. Хотите узнать больше о самых классных проектах по машинному обучению? Читайте нашу подборку.</p>
  <h2><a href="https://magenta.tensorflow.org/" target="_blank"><strong>Magenta</strong></a></h2>
  <figure class="m_custom">
    <img src="https://avatars.mds.yandex.net/get-zen_doc/1112006/pub_5e805b53862a504fb17acce0_5e805b6e5f081e20a96582a8/scale_1200" width="600" />
  </figure>
  <p><strong>Magenta</strong> — детище компании Google, принцип работы которого основан на технологии машинного обучения. ИИ способен создавать музыкальные композиции, а также умеет работать с изобразительным искусством. Кроме того, инструмент может самообучаться и развиваться. Главная цель Magenta — разработка алгоритмов, которые смогут сочинять музыку и создавать другие произведения искусства, основываясь на уже существующих.</p>
  <h2><a href="https://www.tensorflow.org/" target="_blank"><strong>TensorFlow</strong></a></h2>
  <figure class="m_custom">
    <img src="https://avatars.mds.yandex.net/get-zen_doc/1538671/pub_5e805b53862a504fb17acce0_5e805b6ebb31c2679c6e5949/scale_1200" width="1024" />
  </figure>
  <p><strong>TensorFlow</strong> — это фреймворк для построения нейросетей и работы с ними от команды Google Brain. По своей сути, TensorFlow — огромная нейронная сеть, используя которую, можно не только решать различные задачи, но и обрабатывать данные для поиска правильного решения.</p>
  <h2><a href="https://github.com/luanfujun/deep-photo-styletransfer" target="_blank"><strong>Deep Photo Style Transfer</strong></a></h2>
  <figure class="m_custom">
    <img src="https://avatars.mds.yandex.net/get-zen_doc/1899275/pub_5e805b53862a504fb17acce0_5e805b6ee366851eb08d89a8/scale_1200" width="878" />
  </figure>
  <p><strong>Deep Photo Style Transfer</strong> будет интересен не только программистам, но и тем, кто занимается фотографией и обработкой изображений. Эта программа способна скопировать особенности стиля одной фотографии и перенести их на другую, при этом сохранив фотореалистичность.</p>
  <h2><a href="https://github.com/lengstrom/fast-style-transfer" target="_blank"><strong>Fast Style Transfer in TensorFlow</strong></a></h2>
  <figure class="m_custom">
    <img src="https://avatars.mds.yandex.net/get-zen_doc/1602847/pub_5e805b53862a504fb17acce0_5e805b6e8274cd4de9209357/scale_1200" width="704" />
  </figure>
  <p><strong>Fast Style Transfer in TensorFlow</strong> — технология на базе TensorFlow, которая, подобно предыдущей, может переносить стиль одного изображения на другое. Основное отличие состоит в том, что с помощью Fast Style Transfer вы можете преобразовать свои фотографии в картины, выполненные в технике любого художника, или накладывать на них различные визуальные эффекты.</p>
  <figure class="m_custom">
    <img src="https://avatars.mds.yandex.net/get-zen_doc/1582174/pub_5e805b53862a504fb17acce0_5e805b6e68b51338284324e5/scale_1200" width="700" />
    <figcaption>Курс по Machine LearningИдет набор в группу3 800₽ в месяцПОДРОБНЕЕ</figcaption>
  </figure>
  <h2><a href="https://github.com/lllyasviel/style2paints" target="_blank"><strong>Style2Paints</strong></a></h2>
  <figure class="m_custom">
    <img src="https://avatars.mds.yandex.net/get-zen_doc/1540250/pub_5e805b53862a504fb17acce0_5e805b71c52d023d8c954769/scale_1200" width="629" />
  </figure>
  <p><strong>Style2Paints</strong> станет хорошим помощником для тех художников, которые боятся цвета. Искусственный интеллект способен самостоятельно раскрасить изображение, при этом он может не только взять за основу цветовую гамму другой картинки, но и создать свои стили.</p>
  <h2><a href="https://unity3d.com/ru/machine-learning" target="_blank"><strong>Unity Machine Learning Agents</strong></a></h2>
  <figure class="m_custom">
    <img src="https://avatars.mds.yandex.net/get-zen_doc/1589949/pub_5e805b53862a504fb17acce0_5e805b7101822a01b7223c52/scale_1200" width="1024" />
  </figure>
  <p><strong>Unity Machine Learning Agents</strong> — интересный и полезный продукт для разработчиков и научных сотрудников. Разработанный софт способен симулировать различные ситуации и игры для обучения ИИ — это делается с помощью API Python при использовании Unity Editor. В Unity Machine Learning Agents вы также можете имитировать различные среды для обучения искусственного интеллекта.</p>
  <h2><a href="https://github.com/DmitryUlyanov/deep-image-prior" target="_blank"><strong>Deep-image-prior</strong></a></h2>
  <figure class="m_custom">
    <img src="https://avatars.mds.yandex.net/get-zen_doc/42056/pub_5e805b53862a504fb17acce0_5e805b7264a4b71b3b0581e8/scale_1200" width="1024" />
  </figure>
  <p>Вам нужно реставрировать изображение или повысить его разрешение? Используйте <strong>Deep-image-prior</strong>. Эта программа использует нейронные сети, чтобы убрать с изображения шумы и улучшить его качество. Одной из самых любопытных особенностей проекта является возможность восстановить утраченные части изображения, используя нейросеть.</p>
  <h2><a href="https://github.com/albertpumarola/GANimation" target="_blank"><strong>GANimation</strong></a></h2>
  <figure class="m_custom">
    <img src="https://avatars.mds.yandex.net/get-zen_doc/1863556/pub_5e805b53862a504fb17acce0_5e805b75e42ae31777317255/scale_1200" width="1024" />
  </figure>
  <p><strong>GANimation</strong> — ИИ, который анимирует лица. Чтобы сотворить чудо, технологии нужно лишь одно изображение, при этом анимация не покажется жуткой, а будет максимально приближена к мимике реального человека. Для определении эмоций и при составлении сценария лицевых движений используются двигательные единицы.</p>
  <h2><a href="https://github.com/andabi/deep-voice-conversion" target="_blank"><strong>Deep voice conversion</strong></a></h2>
  <figure class="m_custom">
    <img src="https://avatars.mds.yandex.net/get-zen_doc/1592246/pub_5e805b53862a504fb17acce0_5e805b756300d51ddf2f2d29/scale_1200" width="1024" />
  </figure>
  <p><strong>Deep voice conversion</strong> — это инструмент для работы со звуком. С его помощью можно имитировать голос любого человека, сохраняя при этом тембр, речевые особенности и многое другое. Для синтеза, естественно, понадобятся реальные записи или живой пример.</p>
  <h2><a href="http://cmusatyalab.github.io/openface/" target="_blank"><strong>Face Recognition</strong></a></h2>
  <figure class="m_custom">
    <img src="https://avatars.mds.yandex.net/get-zen_doc/1897428/pub_5e805b53862a504fb17acce0_5e805b766300d51ddf2f2d2a/scale_1200" width="765" />
  </figure>
  <p><strong>Face Recognition</strong> — простая, но полезная технология, задействующая машинное обучение. Способна практически со стопроцентной вероятностью распознать лицо человека. При этом нейросеть работает в режиме реального времени и может понять, кто изображен на фотографии</p>
  <p><a href="true">Не пропустите новые публикацииPython LoungeПодписаться</a></p>
  <p><a href="https://zen.yandex.ru/t/%D0%B8%D1%81%D0%BA%D1%83%D1%81%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%B8%D0%BD%D1%82%D0%B5%D0%BB%D0%BB%D0%B5%D0%BA%D1%82" target="_blank">искусственный интеллект</a></p>
  <p><a href="https://zen.yandex.ru/media/id/5e2b14b9f73d9d00ac83239c/primery-proektov-po-mashinnomu-obucheniiu--10-luchshih-5e805b53862a504fb17acce0" target="_blank">Источник</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@python_lounge/raspoznavaniepython</guid><link>https://teletype.in/@python_lounge/raspoznavaniepython?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_lounge</link><comments>https://teletype.in/@python_lounge/raspoznavaniepython?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=python_lounge#comments</comments><dc:creator>python_lounge</dc:creator><title>Создание модели распознавания лиц с использованием глубокого обучения на языке Python</title><pubDate>Thu, 04 Feb 2021 12:59:42 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/ef/29/ef29abd8-17bd-4ad4-8b68-fe1958f24e2c.png"></media:content><description><![CDATA[<img src="https://teletype.in/files/9b/39/9b3905b7-b7ce-49ae-ba19-0b4100a2b676.png"></img>Автор оригинала: Файзан Шайх]]></description><content:encoded><![CDATA[
  <figure class="m_original">
    <img src="https://teletype.in/files/9b/39/9b3905b7-b7ce-49ae-ba19-0b4100a2b676.png" width="1200" />
  </figure>
  <p><a href="https://www.analyticsvidhya.com/blog/2018/12/introduction-face-detection-video-deep-learning-python/" target="_blank">Автор оригинала: Файзан Шайх</a></p>
  <ul>
    <li><a href="https://habr.com/ru/company/netologyru/" target="_blank">Блог компании Нетология</a>,</li>
    <li><a href="https://habr.com/ru/hub/python/" target="_blank">Python</a></li>
    <li>Перевод</li>
  </ul>
  <p></p>
  <h2>Введение</h2>
  <p>За последние годы компьютерное зрение набрало популярность и выделилось в отдельное направление. Разработчики создают новые приложения, которыми пользуются по всему миру.<br />В этом направлении меня привлекает концепция открытого исходного кода. Даже технологические гиганты готовы делиться новыми открытиями и инновациями со всеми, чтобы технологии не оставались привилегией богатых.</p>
  <p>Одна из таких технологий — распознавание лиц. При правильном и этичном использовании эта технология может применяться во многих сферах жизни.</p>
  <p>В этой статье я покажу вам, как создать эффективный алгоритм распознавания лиц, используя инструменты с открытым исходным кодом. Прежде чем перейти к этой информации, хочу, чтобы вы подготовились и испытали вдохновение, посмотрев это видео:</p>
  <figure class="m_column">
    <iframe src="https://www.youtube.com/embed/wr4rx0Spihs?autoplay=0&loop=0&mute=0"></iframe>
  </figure>
  <h2>Распознавание лиц: потенциальные сферы применения</h2>
  <p>Приведу несколько потенциальных сфер применения технологии распознавания лиц.</p>
  <p><strong>Распознавание лиц в соцсетях</strong>. Facebook заменил присвоение тегов изображениям вручную на автоматически генерируемые предложения тегов для каждого изображения, загружаемого на платформу. Facebook использует простой алгоритм распознавания лиц для анализа пикселей на изображении и сравнения его с соответствующими пользователями.</p>
  <p><strong>Распознавание лиц в сфере безопасности</strong>. Простой пример использования технологии распознавания лиц для защиты личных данных — разблокировка смартфона «по лицу». Такую технологию можно внедрить и в пропускную систему: человек смотрит в камеру, а она определяет разрешить ему войти или нет.</p>
  <figure class="m_column">
    <iframe src="https://www.youtube.com/embed/bYrRQQX2PvY?autoplay=0&loop=0&mute=0"></iframe>
  </figure>
  <p><strong>Распознавание лиц для подсчета количества людей</strong>. Технологию распознавания лиц можно использовать при подсчете количества людей, посещающих какое-либо мероприятие (например, конференцию или концерт). Вместо того чтобы вручную подсчитывать участников, мы устанавливаем камеру, которая может захватывать изображения лиц участников и выдавать общее количество посетителей. Это поможет автоматизировать процесс и сэкономить время.</p>
  <figure class="m_original">
    <img src="https://habrastorage.org/webt/fn/bc/-k/fnbc-kgpcaeogtd4attryczyjfq.png" width="1000" />
  </figure>
  <h2>Настройка системы: требования к аппаратному и программному обеспечению</h2>
  <p>Рассмотрим, как мы можем использовать технологию распознавания лиц, обратившись к доступным нам инструментам с открытым исходным кодом.</p>
  <p>Я использовал следующие инструменты, которые рекомендую вам:</p>
  <ul>
    <li>Веб-камера (Logitech C920) для построения модели распознавания лиц в реальном времени на ноутбуке Lenovo E470 ThinkPad (Core i5 7th Gen). Вы также можете использовать встроенную камеру своего ноутбука или видеокамеру с любой подходящей системой для анализа видео в режиме реального времени вместо тех, которые использовал я.</li>
    <li>Предпочтительно использовать графический процессор для более быстрой обработки видео.</li>
    <li>Мы использовали операционную систему Ubuntu 18.04 со всем необходимым ПО.</li>
  </ul>
  <p>Прежде чем приступить к построению нашей модели распознавания лиц, разберем эти пункты более подробно.</p>
  <h3>Шаг 1: Настройка аппаратного обеспечения</h3>
  <p>Проверьте, правильно ли настроена камера. С Ubuntu это сделать просто: посмотрите, опознано ли устройство операционной системой. Для этого выполните следующие шаги:</p>
  <ol>
    <li>Прежде чем подключить веб-камеру к ноутбуку, проверьте все подключенные видео устройства, напечатав в командной строке <code>ls /dev/video*</code>. В результате выйдет список всех видео устройств, подключенных к системе.</li>
    <li>Подключите веб-камеру и задайте команду снова. Если веб-камера подключена правильно, новое устройство будет отражено в результате выполнения команды.</li>
    <li>Также вы можете использовать ПО веб-камеры для проверки ее корректной работы. В Ubuntu для этого можно использовать программу «Сheese».</li>
  </ol>
  <h3>Шаг 2: Настройка программного обеспечения</h3>
  <p><strong>Шаг 2.1: Установка Python</strong></p>
  <p>Код, указанный в данной статье, написан с использованием Python (версия 3.5). Для установки Python рекомендую использовать <a href="https://www.anaconda.com/download" target="_blank">Anaconda</a> – популярный дистрибутив Python для обработки и анализа данных.</p>
  <p><strong>Шаг 2.2: Установка OpenCV</strong></p>
  <p><a href="https://opencv.org/" target="_blank">OpenCV </a> – библиотека с открытым кодом, которая предназначена для создания приложений компьютерного зрения. Установка OpenCV производится с помощью <code>pip</code>:</p>
  <pre>pip3 install opencv-python</pre>
  <p><strong>Шаг 2.3: Установите face_recognition API</strong></p>
  <p>Мы будем использовать <code>face_recognition API</code>, который считается самым простым API для распознавания лиц на Python во всем мире. Для установки используйте:</p>
  <pre>pip install dlib
pip install face_recognition</pre>
  <h2>Внедрение</h2>
  <p>После настройки системы переходим к внедрению. Для начала, мы создадим программу, а затем объясним, что сделали.</p>
  <h3>Пошаговое руководство</h3>
  <p>Создайте файл <code>face_detector.py</code> и затем скопируйте приведенный ниже код:</p>
  <pre># import libraries
import cv2
import face_recognition
 
# Get a reference to webcam
video_capture = cv2.VideoCapture(&quot;/dev/video1&quot;)
 
# Initialize variables
face_locations = []
 
while True:
	
# Grab a single frame of video
	
ret, frame = video_capture.read()
 
	
# Convert the image from BGR color (which OpenCV uses) to RGB color (which face_recognition uses)
	
rgb_frame = frame[:, :, ::-1]
 
	
# Find all the faces in the current frame of video
	
face_locations = face_recognition.face_locations(rgb_frame)
 
	
# Display the results
	
for top, right, bottom, left in face_locations:
    	
# Draw a box around the face
    	
cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)
 
	
# Display the resulting image
	
cv2.imshow(&#x27;Video&#x27;, frame)
 
	
# Hit &#x27;q&#x27; on the keyboard to quit!
	
if cv2.waitKey(1) &amp; 0xFF == ord(&#x27;q&#x27;):
    	
break
 
# Release handle to the webcam
video_capture.release()
cv2.destroyAllWindows()</pre>
  <p>Затем запустите этот файл Python, напечатав:</p>
  <pre>python face_detector.py</pre>
  <p>Если все работает правильно, откроется новое окно с запущенным режимом распознавания лиц в реальном времени.</p>
  <figure class="m_column">
    <iframe src="https://www.youtube.com/embed/eh14NomINOs?autoplay=0&loop=0&mute=0"></iframe>
  </figure>
  <p>Подведем итоги и объясним, что сделал наш код:</p>
  <ol>
    <li>Сначала мы <strong>указали аппаратное обеспечение</strong>, на котором будет производиться анализ видео.</li>
    <li>Далее сделали <strong>захват видео</strong> в реальном времени кадр за кадром.</li>
    <li>Затем <strong>обработали каждый кадр</strong> и <strong>извлекли местонахождение всех лиц</strong> на изображении.</li>
    <li>В итоге, <strong>воспроизвели эти кадры в форме видео</strong> вместе с указанием на то, где расположены лица.</li>
  </ol>
  <h3>Пример применения технологии распознавания лиц</h3>
  <p>На этом все самое интересное не заканчивается. Мы сделаем еще одну классную вещь: создадим полноценный пример применения на основе кода, приведенного выше. Внесем небольшие изменения в код, и все будет готово.</p>
  <p>Предположим, что вы хотите создать автоматизированную систему с использованием видеокамеры для отслеживания, где спикер находится в данный момент времени. В зависимости от его положения, система поворачивает камеру так, что спикер всегда остается в центре кадра.<br />Первый шаг — создайте систему, которая идентифицирует человека или людей на видео и фокусируется на местонахождении спикера.</p>
  <figure class="m_original">
    <img src="https://habrastorage.org/webt/xg/q-/ub/xgq-ubchs7yktjujlxcoakih7d0.png" width="850" />
  </figure>
  <p>Разберем, как это сделать. В качестве примера я выбрал видео на YouTube с выступлением спикеров конференции «DataHack Summit 2017».</p>
  <p>Сначала импортируем необходимые библиотеки:</p>
  <pre>import cv2
import face_recognition</pre>
  <p>Затем считываем видео и устанавливаем длину:</p>
  <pre>input_movie = cv2.VideoCapture(&quot;sample_video.mp4&quot;)
length = int(input_movie.get(cv2.CAP_PROP_FRAME_COUNT))</pre>
  <p>После этого создаем файл вывода с необходимым разрешением и скоростью передачи кадров, аналогичной той, что была в файле ввода.</p>
  <p>Загружаем изображение спикера в качестве образца для распознания его на видео:</p>
  <pre>image = face_recognition.load_image_file(&quot;sample_image.jpeg&quot;)
face_encoding = face_recognition.face_encodings(image)[0]
 
known_faces = [
face_encoding,
]</pre>
  <p>Закончив, запускаем цикл, который будет:</p>
  <ul>
    <li>Извлекать кадр из видео.</li>
    <li>Находить все лица и идентифицировать их.</li>
    <li>Создавать новое видео, которое будет сочетать в себе оригинал кадра с указанием местонахождения лица спикера с подписью.</li>
  </ul>
  <p>Посмотрим на код, который будет это выполнять:</p>
  <pre># Initialize variables
face_locations = []
face_encodings = []
face_names = []
frame_number = 0
 
while True:
	
# Grab a single frame of video
	
ret, frame = input_movie.read()
	
frame_number += 1
 
	
# Quit when the input video file ends
	
if not ret:
    	
break
 
	
# Convert the image from BGR color (which OpenCV uses) to RGB color (which face_recognition uses)
	
rgb_frame = frame[:, :, ::-1]
 
	
# Find all the faces and face encodings in the current frame of video
	
face_locations = face_recognition.face_locations(rgb_frame, model=&quot;cnn&quot;)
	
face_encodings = face_recognition.face_encodings(rgb_frame, face_locations)
 
	
face_names = []
	
for face_encoding in face_encodings:
    	
# See if the face is a match for the known face(s)
    	
match = face_recognition.compare_faces(known_faces, face_encoding, tolerance=0.50)
 
    	
name = None
    	
if match[0]:
        	
name = &quot;Phani Srikant&quot;
 
    	
face_names.append(name)
 
	
# Label the results
	
for (top, right, bottom, left), name in zip(face_locations, face_names):
    	
if not name:
        	
continue
 
       # Draw a box around the face
    	
cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)
 
    	
# Draw a label with a name below the face
    	
cv2.rectangle(frame, (left, bottom - 25), (right, bottom), (0, 0, 255), cv2.FILLED)
        font = cv2.FONT_HERSHEY_DUPLEX
    	
cv2.putText(frame, name, (left + 6, bottom - 6), font, 0.5, (255, 255, 255), 1)
 
	
# Write the resulting image to the output video file
	
print(&quot;Writing frame {} / {}&quot;.format(frame_number, length))
	
output_movie.write(frame)
 
# All done!
input_movie.release()
cv2.destroyAllWindows()</pre>
  <p>Код даст вам вот такой результат:</p>
  <figure class="m_column">
    <iframe src="https://www.youtube.com/embed/uOcN6FhX6gY?autoplay=0&loop=0&mute=0"></iframe>
  </figure>
  <p><a href="https://habr.com/ru/company/netologyru/blog/434354/" target="_blank">Источник</a></p>
  <p></p>
  <p>Подписывайтесь на наши каналы: <br />Python <a href="https://t.me/python_lounge" target="_blank">@python_lounge</a><br />Программирование <a href="http://t.me/cccoding" target="_blank">@cccoding</a><br />ИТ Безопасность <a href="http://t.me/it_ha" target="_blank">@it_ha</a></p>

]]></content:encoded></item></channel></rss>