<MyRusakov.ru />

Разработчик игр на Unreal Engine

Разработчик игр на Unreal Engine

Этот комплект с нуля всего за 7 месяцев сделает Вас Unreal-разработчиком. И при этом учиться достаточно 1 час в день.

Начнёте Вы с основ программирования, постепенно перейдя к C++. Затем очень подробно изучите Unreal Engine, и после научитесь программировать на C++ в Unreal Engine. В конце создадите крупный проект на C++ в Unreal Engine для своего портфолио.

Комплект содержит:

- 416 видеоуроков

- 95 часов видео

- 1024 задания для закрепления материала из уроков

- 3 финальных тестирования

- 4 сертификата

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Распознаем фигуры на изображениях с Python и OpenCV

Распознаем фигуры на изображениях с Python и OpenCV

Распознавание форм на изображениях — одна из основных задач компьютерного зрения, которую можно легко реализовать с помощью библиотеки OpenCV. В этой статье мы рассмотрим, как определить основные геометрические фигуры на изображении и подписать их с использованием Python. Давайте начнем!

Шаг 1: Установка и настройка окружения

Для начала, убедитесь, что у вас установлены необходимые библиотеки. Если они отсутствуют, вы можете установить их с помощью pip:


pip install opencv-python matplotlib numpy

Шаг 2: Загрузка и предобработка изображения

Мы начнем с загрузки изображения и преобразования его в градации серого:


import cv2 
import numpy as np 
from matplotlib import pyplot as plt 

# Чтение изображения 
img = cv2.imread('shapes.png') 

# Преобразование изображения в градации серого 
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 

Преобразование изображения в градации серого помогает упростить дальнейшую обработку и анализ.

Шаг 3: Применение пороговой обработки

Пороговая обработка позволяет преобразовать изображение в бинарное, что облегчает процесс поиска контуров:

# Установка порога для изображения в градациях серого 
_, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) 

Шаг 4: Поиск контуров

Теперь мы можем найти контуры на бинарном изображении с помощью функции findContours:


# Использование функции findContours() для нахождения контуров 
contours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 

Шаг 5: Определение и подпись фигур

На этом этапе мы будем проходить по каждому найденному контуру, определять форму и подписывать её название на изображении:

i = 0

# Список для хранения названий фигур 
for contour in contours: 

    # Игнорируем первый контур, потому что findContours распознает все изображение как контур 
    if i == 0: 
        i = 1
        continue

    # Функция cv2.approxPolyDP() для аппроксимации формы 
    approx = cv2.approxPolyDP(contour, 0.01 * cv2.arcLength(contour, True), True) 

    # Использование функции drawContours() для рисования контуров 
    cv2.drawContours(img, [contour], 0, (0, 0, 255), 5) 

    # Нахождение центра формы 
    M = cv2.moments(contour) 
    if M['m00'] != 0.0: 
        x = int(M['m10']/M['m00']) 
        y = int(M['m01']/M['m00']) 

    # Печать названия формы в центре каждой фигуры 
    if len(approx) == 3: 
        cv2.putText(img, 'Треугольник', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2) 
    elif len(approx) == 4: 
        cv2.putText(img, 'Четырехугольник', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2) 
    elif len(approx) == 5: 
        cv2.putText(img, 'Пятиугольник', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2) 
    elif len(approx) == 6: 
        cv2.putText(img, 'Шестиугольник', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2) 
    else: 
        cv2.putText(img, 'Круг', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2) 

Шаг 6: Отображение результата

Осталось только отобразить полученное изображение:

# Отображение изображения после рисования контуров 
cv2.imshow('shapes', img) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

Теперь вы можете видеть, как программа определяет и подписывает различные фигуры на изображении. Этот процесс можно использовать в различных приложениях, таких как распознавание объектов, анализ изображений и даже в играх.

Заключение

Этот простой пример демонстрирует, как с помощью Python и библиотеки OpenCV можно решать задачи компьютерного зрения. Если вам интересно узнать больше и углубиться в эту тему, я рекомендую обратить внимание на видеокурс Написание лайфхаков на Python. В нем вы найдете множество полезных советов и примеров, которые помогут вам стать настоящим экспертом в области Python программирования.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.