<MyRusakov.ru />

Программирование на C++ с Нуля до Гуру

Программирование на C++ с Нуля до Гуру

Данный курс научит Вас программировать на языке C++, который, несмотря на свой почтенный возраст, необычайно сильно востребован. Курс состоит из 6 разделов, посмотрев которые и выполнив все упражнения, Вы с нуля освоите этот язык и сможете создавать самые разные проекты любой сложности на C++.

Для закрепления материала из уроков к ним идёт множество упражнений.

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

Также вместе с курсов Вы получаете Бонус "Программирование на C++ в Unreal Engine", в котором Вы научитесь создавать игры на C++ с использованием этого движка.

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

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

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

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

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

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

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

Зачем Вы изучаете программирование/создание сайтов?

Операции маскировки над изображениями с Python и OpenCV

Операции маскировки над изображениями с Python и OpenCV

Изображение есть набор данных, закодированных в числовой последовательности. Извлекая числа, затем можно проводить с ними различные операции. И ,также, полученный результат можно вернуть в виде изображения.
Маскировка-это процесс изменения изображения путем применения маски. Здесь маска-это изображение, интенсивность пикселей которого равна либо нулю, либо единице, т. е. двоичная. Когда маска применяется к изображению, пиксели (изображения), совпадающие с нулем в маске, отключаются. Аналогично, пиксели, совпадающие с единицей, остаются прежними. Это в точности похоже на побитовую операцию И. Указанные операции возможно провести с помощью Opencv и Python.

И так, для чего используется маскировка?

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

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

OpenCV предоставляет функции для выполнения арифметических операций, таких как AND, OR, NOT, XOR для изображений. Эти операции полезны для маскировки.

И для начала, определяем массивы нулей numpy и рисуем на них некоторые фигуры(прямоугольник и круг) белым цветом, т. е. цветом (255,255,255). Мы будем выполнять операции **AND, OR, NOT, XOR ** над этими двумя массивами и видеть их выходные данные.


import numpy as np
import cv2

rectangle = np.zeros((300, 300), dtype = "uint8")
cv2.rectangle(rectangle, (25, 25), (275, 275), 255, -1)

circle = np.zeros((300, 300), dtype = "uint8")
cv2.circle(circle, (150, 150), 150, 255, -1)


cv2.imshow("rect",rectangle)
cv2.waitKey(0)

rectangle

Изображение


cv2.imshow("rect", circle)
cv2.waitKey(0)

circle

Изображение

Операция AND

Операция с двумя входами, которая возвращает значение true тогда и только тогда, когда оба входа являются истинными (или 1)

bitAnd = cv2.bitwise_and(rectangle, circle)
Изображение

OR

Операция с двумя входами, которая возвращает значение true только в том случае, если один из входов является истинным (или 1).

bitOr = cv2.bitwise_or(rectangle, circle)
Изображение

NOT

NOT является единственной операцией, которая изменяет значение ввода. В этом случае он преобразует все пиксели со значением 1 в 0 и наоборот.

bitNot = cv2.bitwise_not(circle)
Изображение

Операция XOR

Операция XOR, или исключающее или(OR) может быть обобщена как функция, которая возвращает значение true только в том случае, если два операнда различны. Пример Ввода(1,1) или ввода(0,0) приводит к ложному(или 0), но ввод(1,0) или ввод(0,1) является истинным(или 1).

bitXor = cv2.bitwise_xor(rectangle, circle)
Изображение

Маскировка изображений

Маскировка обычно выполняется с помощью побитовой функции И - AND. Эта функция принимает дополнительный ввод, называемый маской. Мы передаем значение нашей маски, которое затем позволит нам показывать только те части изображения, которые активны в маске.

Определите массив numpy (c нулями), равный форме изображения (на котором должна выполняться маскировка). Определите свой ROI и нанесите его на маску (сделав круг или прямоугольник белого цвета). Примените побитовую операцию И.

Первые два аргумента функции bitwise_and() должны быть изображением. Поскольку размеры маски и запроса не совпадают. Наконец, определите переменную маски в качестве третьего аргумента.


import numpy as np
import cv2
import sys

# Шаг 1
mask = np.zeros((300, 300), dtype = "uint8")

# Шаг 2
cv2.rectangle(mask, (50, 250), (150, 150), 255, -1)
cv2.rectangle(mask, (150, 150), (250, 50), 255, -1)
cv2.circle(mask, (75, 75), 50, 255, -1)
cv2.circle(mask, (225, 225), 50, 255, -1)

img = cv2.imread('image.png')
img = cv2.resize(img,(300,300),cv2.INTER_AREA)

bitwiseAnd = cv2.bitwise_and(img,img,mask=mask)

# Шаг 3
cv2.imshow("Masked image",bitwiseAnd)
cv2.waitKey(0)

Изображение

Таким образом, мы применили побитовые операции применительно к изображению. И как видно, мы оставили только те области которые соответствуют очерченным фигурам.

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

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

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

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

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

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

  1. Кнопка:

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

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

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

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

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

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