Skip to main content

Telegram bot that draws the outlines of drips on a photo !!! Warning!!! Before running, be sure to create the folders "exel", "new_file" and "save_docs" in the workspace where the python file is located !!!!

Project description

Droplet-Detector

droplet


Build Status


Введение

Перед нашей командой стояла задача создать простой в использовании проект, который будет рисовать контуры капель. Также было необходимо написать код для подсчёта пикселей каждой капли и добавить возможность сохранять данные в виде таблицы. Эта работа позволила нам глубже изучить компьютерное зрение с помощью библиотек OpenCV2 в Python, научиться работать в команде и дала возможность создать собственного телеграмм-бота.

Работу выполнили студенты из группы 21932:

Обнаружение контуров

Для корректного обнаружения контуров капель мы использовали Canny Edge. Это алгоритм, состоящий из 4 основных шагов:

  1. Уменьшение шума с помощью гауссовского сглаживания.
  2. Вычисление градиента изображения с помощью фильтра Собеля.
  3. Применение Non-Max Suppression для простого подавления локальных минимумов.
  4. Применения пороговой обработки с Гистерезисом, которая создает 2 пороговых значения T_upper и T_lower, которые используются в функции Canny().

Для наглдяности покажем работу алгоритма на следующем изображении капель:

разг

Расчёт площади

Для того, чтобы правильно считалась площадь, была необходима отрисовка замкнутых контуров капель. Это и была следующая проблема, с которой мы столкнулись. Для ее решения мы последовательлно применяли несколько функций:

  1. Уменьшение шума с помощью медианного сглаживания.
  2. Увелечение резкости изображения с помощью 2D фильтра
  3. Маска Собеля для выделения контуров.
  4. Размытие Гаусса для уменьшения шума.
  5. Обнаружение контуров с помощью Canny.
  6. Получение массива внешних контуров с помощью findContours.
  7. Закрашиваниие контуров с помощью fillPoly.
  8. Повторяем с шага 1 для получившейся маски.
  9. Сложение двух получившихся масок.
  10. Отрисовка контуров на картикне.

Для подсчета площади капли в пикселях использовалась функция contourArea, которая считает пиксели в замкнутом контуре.

В итоге, мы пришли к следующим результатам:

разг2

Отрисовка контуров на входном изображении

В конце программы у нас имеются входное изображение и маска с контурами этого изображения. С помощью функции bitwise_and(img, img, mask=mask) из библиотеки OpenCV2 мы рисуем маску прямо на входном изображении и выводим это как итог.

Телеграмм-бот

Для взаимодействия пользователя и телеграмм-бота мы использовали библиотеку Telebot. Бот запускается с помощью команды /start, после чего он нас приветствует и просит ввести команду Help. Далее мы можем увидеть список команд в определённой последовательности для корректной работы. Наш бот не очень разговорчивый, поэтому если вы попытаетесь поговорить с ним на отдалённые темы, у вас ничего не выйдет.

Без имени

DockerHub

Команда для начала работы проекта

docker run nekrasovaanna/droplet-detector

Установка с Pypi и запуск

Установите библиотеку Droplet_Detector в рабочую область

pip install Droplet_Detector

Перед запуском создайте папки в рабочей области "exel", "new_file" and "save_docs"

mkdir exel,new_file,save_docs

Импортируйте модуль Bot.py в вашем файле .py

from Droplet_Detector import Bot

Запустите бота написав

Bot.start()

Cсылка на бота

https://t.me/Droplet_Detector_bot

Источники

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Droplet_Detector-0.1.3.tar.gz (12.0 kB view details)

Uploaded Source

File details

Details for the file Droplet_Detector-0.1.3.tar.gz.

File metadata

  • Download URL: Droplet_Detector-0.1.3.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.17

File hashes

Hashes for Droplet_Detector-0.1.3.tar.gz
Algorithm Hash digest
SHA256 b7565ff1259424503469c32fc697ea03462b7e34ac653d3a822b6b5954440852
MD5 cda70468bc7a64d9b43c0ad314d6aaed
BLAKE2b-256 b2432bf186d22813e87b38fa3f5e6c198c71301437179d4581e42b1e4c16d673

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page