Курсовой проект по предмету ИТ. Программа предназначена для распознавания показаний стрелочных приборов по фотографии
Мной был использован язык программирования Python версии 3.6, виртуальное окружение pip и Pycharm IDE. Использовались библиотеки питон opencv2, numpy, math, os, tkinter последих версий.
Было разработано 2 метода решения задачи, один показал крайне низкую точность срабатывания, тем не менее, его я тоже приведу в работе. Метод поиска по цвету Данный метод заключается в поиске на изображении фигуры (стрелочки) определенного цвета, отличного от цвета корпуса. Т.к на большинстве приборов они имеют красный цвет, я использовал его. Алгоритм:
- Импорт изображения и преобразование его в цветовую модель HSV (opencv cvtColor)
- Применение цветового фильтра по нужному цвету (opencv threshold)
- Поиск контуров на полученном изображении (opencv findContours)
- Поиск прямоугольных контуров (opencv minArearect)
- Очистка помех, стрелочка – самый большой
- Поиск угла наклона большей стороны прямоугольника
- Если прямоугольник расположен выше центра фотографии, то угол (0, 180), если ниже, (180, 360). Т.к Принадлежность к верхней или нижней полуплоскости определяется дополнительно, если нижняя, то к углу прибавляется 180 гр.
- Вывод угла
- Импорт изображения, его преобразование в черно-белое, размытие методом Гаусса и удаление помех. Сложно подобрать нужные коэффициенты, такие, чтобы на изображении остался виден корпус и стрелочка прибора и были удалены все лишние детали. (opencv GaussianBlur, threshold) в работе – функции get_ready и get_ready2
- Изображение обрезается, так, чтобы остался только центр прибора с стрелкой, а корпус был бы не виден.
- Вычисляются цветовые моменты (opencv moments)
- Из них можно найти тангенс угла наклона стрелочки и, соответственно, сам угол.