Рубрики
Без рубрики

Часть 3 серии обработки изображений: Рисунок с OpenCV

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

Автор оригинала: Pankaj Kumar.

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

Большая часть работы с обработкой изображений связана с идентификацией объектов и контуров в предоставленном изображении.

Это может быть сделано путем маркировки этих форм во время обработки.

Но как мы это делаем?

Тот же вопрос, который устроил ученых, работающих над обработкой изображений, привел к развитию рисунка в OpenCV.

Мы будем использовать несколько из этих функций, чтобы начать работу с рисунком в OpenCV в этой статье.

Обратите внимание, что это третья статья серии обработки изображений, и она могла бы хорошая идея посмотреть в вступительную сессию, прежде чем пройти через эту статью!

Рисование с Python Opencv

Давайте начнем рисовать с модулем OpenCV.

Настроить все это

Чтобы начать, нам сначала нужно импортировать модули, которые мы будем использовать для рисования в OpenCV.

Это, конечно, состоит из CV2 Модуль, но другой модуль, который мы будем использовать, это Numpy модуль Отказ

Если у вас нет Numpy, уже установленного в вашей системе, вот команда для установки его через PIP:

pip install numpy

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

# importing the numpy module to create a canvas of 0 value pixels.
import numpy as np

# importing the OpenCV module
import cv2

Для того, чтобы сделать что-либо, мы сначала нам нужно будет что-то нарисовать, поэтому давайте инициализируем холст, чтобы сделать это.

Мы будем делать это, создав холст, используя Numpy модуль и сделать то, что имеет 300 × 300 пикселей со значением каждого пикселя, установленного на 0 Отказ

Это означает, что мы будем представлены на 900 пикселей Black Canvas, как Значение для 0 черного в изображениях.

# setting up a black canvas of 900 pixels
canvas = np.zeros((300, 300, 3), dtype="uint8")

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

# setting the color green to a variable.
green = (0, 255, 0)

Теперь, когда мы все настроили, давайте приложим рисовать предметы на холсте!

Давайте нарисуем линии

Теперь мы нарисуем две строки как диагонали, используя линия () функция.

Чтобы показать разницу между толщиной, мы будем изменять цвет для другой диагонали.

# To draw a green line across the canvas whose size you have to adjust through the editor?
cv2.line(canvas, (0, 0), (300, 300), green)
cv2.imshow("Canvas", canvas)
cv2.waitKey(0)

# Draws a three-inch red line across the other diagonal
red = (0, 0, 255)
cv2.line(canvas, (300, 0), (0, 300), red, 3)
cv2.imshow("Canvas", canvas)
cv2.waitKey(0)

Выход, который вы должны получить, должен выглядеть так, как это так,

Работа с коробками

Выходя вперед, мы можем использовать Прямоугольник () Функция из CV2 Модуль для рисования прямоугольников в холсте.

# While this command draws a rectangle given the right dimensions
cv2.rectangle(canvas, (10, 10), (60, 60), green)
cv2.imshow("Canvas", canvas)
cv2.waitKey(0)

# Draws a rectangle when specified the co-ordinates, with a thickness for the edges
cv2.rectangle(canvas, (20, 20), (70, 70), red, 5)
cv2.imshow("Canvas Red", canvas)
# The duration for which the canvas stays by the defined value
cv2.waitKey(0)

blue = (255, 0, 0)
# -1 thickness causes the entire box to get filled.
cv2.rectangle(canvas, (200, 50), (225, 125), blue, -1)
cv2.imshow("Canvas Blue", canvas)
cv2.waitKey(0)

Выход, который вы должны получать при этом, следует посмотреть что-то подобное:

Круги и рандомизация

Смешивая вещи, мы теперь будем приступить к работе с кругами. Вот два примера работы с кругами.

Концентрические круги

Здесь мы центрируем точку происхождения для всех кругов, и рисуя их с приращими радиуса.

# centers the canvas to the center and forms rings based on the increment of the radius
canvas = np.zeros((300, 300, 3), dtype="uint8")
(centerX, centerY) = (int(canvas.shape[1] / 2), int(canvas.shape[0] / 2))
white = (255, 255, 255)
for r in range(0, 175, 25):
    cv2.circle(canvas, (centerX, centerY), r, white)
cv2.imshow("Canvas White", canvas)
cv2.waitKey(0)

Выход, который вы получаете, должен выглядеть что-то подобное,

Случайные круги

Здесь мы используем модуль Numpy, чтобы рандомизировать размер кругов и точек, при которых они будут размещены в холсте.

Мы также разместим Waitkey () Таким, что мы можем просмотреть каждый круг индивидуально, прежде чем перейти к следующему.

# Drawing circles on random with varying radii,
# throughout the canvas
for i in range(0, 25):
    radius = np.random.randint(5, high=200)
    color = np.random.randint(0, high=256, size=(3,)).tolist()
    pt = np.random.randint(0, high=300, size=(2,))
    cv2.circle(canvas, tuple(pt), radius, color, -1)

    cv2.imshow("Canvas", canvas)
    cv2.waitKey(0)

Работая с кругами, выход, который вы получаете, будет случайным, и как таковой, лучше проверить его самостоятельно 😉

Изменяя существующие изображения

Мы можем изменить существующие изображения, загрузив их в переменную, используя cv2.imread () функция.

# reading the image into a variable using the imread() function
image = cv2.imread(
        "D:\\image-processing\\assets\\ey.jpg"
)
# drawing three circles and a rectangle on the image
cv2.circle(image, (168, 188), 90, (0, 0, 255), -2)
cv2.circle(image, (150, 164), 10, (0, 0, 255), -1)
cv2.circle(image, (192, 174), 10, (0, 0, 255), -1)
cv2.rectangle(image, (134, 200), (186, 218), (0, 0, 255), -1)

# showing the output of the process
cv2.imshow("Output", image)
cv2.waitKey(0)

Я вводит изображение, которое присутствует в активах репозитория, но вы можете использовать свое собственное изображение.

Это можно сделать, изменяя расположение изображения!

Заключение

Мы научились выполнять рисунок с OpenCV. Случаи использования для работы с рисунком в OpenCV определенно не бесполезны.

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

Реализации чертежа в OpenCV позволяет нам работать с моделями машинного обучения в будущем.

Хотите посмотреть на будущее, где мы работаем с обработкой изображений в более широком масштабе?

Посмотрите в OpenCV и распознавание лица и реализация Java Android и Camerax Opencv!

Рекомендации