Арифметические операции с изображениями

OpenCVOpenCVBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL opencv(("OpenCV")) -.-> opencv/BasicOperationsGroup(["Basic Operations"]) opencv/BasicOperationsGroup -.-> opencv/add("Image Addition") opencv/BasicOperationsGroup -.-> opencv/add_weighted("Image Blending") opencv/BasicOperationsGroup -.-> opencv/bitwise_and("Bitwise AND") opencv/BasicOperationsGroup -.-> opencv/bitwise_not("Bitwise NOT") opencv/BasicOperationsGroup -.-> opencv/bitwise_or("Bitwise OR") opencv/BasicOperationsGroup -.-> opencv/bitwise_xor("Bitwise XOR") opencv/BasicOperationsGroup -.-> opencv/imread("Image Read") opencv/BasicOperationsGroup -.-> opencv/imwrite("Image Write") opencv/BasicOperationsGroup -.-> opencv/subtract("Image Subtraction") subgraph Lab Skills opencv/add -.-> lab-38502{{"Арифметические операции с изображениями"}} opencv/add_weighted -.-> lab-38502{{"Арифметические операции с изображениями"}} opencv/bitwise_and -.-> lab-38502{{"Арифметические операции с изображениями"}} opencv/bitwise_not -.-> lab-38502{{"Арифметические операции с изображениями"}} opencv/bitwise_or -.-> lab-38502{{"Арифметические операции с изображениями"}} opencv/bitwise_xor -.-> lab-38502{{"Арифметические операции с изображениями"}} opencv/imread -.-> lab-38502{{"Арифметические операции с изображениями"}} opencv/imwrite -.-> lab-38502{{"Арифметические операции с изображениями"}} opencv/subtract -.-> lab-38502{{"Арифметические операции с изображениями"}} end

Сложение изображений

Сложение изображений - это процесс добавления значений пикселей к двум изображениям. В OpenCV для этого используется функция cv2.add().

Откройте Python-интерпретатор

Откройте Python-интерпретатор в терминале

python3

Загрузите два изображения

Используйте .imread, чтобы прочитать целевые изображения.

import cv2 as cv2
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')

Сложите изображения

Используйте .add(), чтобы сложить два изображения, прочитанные на предыдущем шаге.

result = cv2.add(img1, img2)

Сохраните результат

Запишите результат.

cv2.imwrite('Image_Addition.jpg', result)

Пример

Полученное изображение Image_Addition.jpg выглядит так:

Image addition result example

Смешивание изображений

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

Image blending equation diagram

cv.addWeighted() применяет эту формулу к изображению.

Добавьте изображения

Используйте .addWeighted(), чтобы применить формулу к изображениям, прочитанным на предыдущем шаге.

result = cv2.addWeighted(img1,0.7,img2,0.3,0)

Сохраните результат

Запишите результат.

cv2.imwrite('Image_Blending.jpg', result)

Пример

Полученное изображение Image_Blending.jpg выглядит так:

blended image result

Вычитание изображений

Вычитание изображений используется для нахождения разницы между двумя изображениями. Он вычитает значения пикселей одного изображения из другого. В OpenCV вы можете использовать функцию cv2.subtract().

Вычтите изображения

Используйте .subtract(), чтобы вычесть значения пикселей изображения img1 из изображения img2.

result = cv2.subtract(img1, img2)

Сохраните результат

Запишите результат.

cv2.imwrite('Image_Subtraction.jpg', result)

Пример

Полученное изображение Image_Subtraction.jpg выглядит так:

Image subtraction result example

Побитовые операции

Побитовые операции используются для манипуляции отдельными битами значений пикселей. OpenCV предоставляет функции, такие как cv2.bitwise_and(), cv2.bitwise_or(), cv2.bitwise_xor() и cv2.bitwise_not(), для выполнения побитовых операций.

Посмотрим пример каждой операции:

Побитовое И

Используйте .bitwise_and(), чтобы вычислить побитовое И бит значений пикселей в двух изображениях.

bitwise_and = cv2.bitwise_and(img1, img2)

Побитовое ИЛИ

Используйте .bitwise_or(), чтобы вычислить побитовое ИЛИ бит значений пикселей в двух изображениях.

bitwise_or = cv2.bitwise_or(img1, img2)

Побитовое исключающее ИЛИ

Используйте .bitwise_xor(), чтобы вычислить побитовое исключающее ИЛИ бит значений пикселей в двух изображениях.

bitwise_xor = cv2.bitwise_xor(img1, img2)

Побитовое НЕ

Используйте .bitwise_not(), чтобы вычислить побитовое НЕ бит значений пикселей в двух изображениях.

bitwise_not_img1 = cv2.bitwise_not(img1)

Сохраните результаты

Запишите результаты.

cv2.imwrite('Bitwise_AND.jpg', bitwise_and)
cv2.imwrite('Bitwise_OR.jpg', bitwise_or)
cv2.imwrite('Bitwise_XOR.jpg', bitwise_xor)
cv2.imwrite('Bitwise_NOT_Image1.jpg', bitwise_not_img1)

Пример

Полученное изображение выглядит так:

  • И Bitwise_AND.jpg:
Bitwise AND operation result
  • ИЛИ Bitwise_OR.jpg:
Bitwise OR operation result
  • Исключающее ИЛИ Bitwise_XOR.jpg:
Bitwise XOR operation result
  • НЕ Bitwise_NOT_Image1.jpg:
Bitwise NOT operation result

Резюме

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

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