Как наложить одно изображение на другое в opencv 3?

Пользователь

от amaya_bahringer , в категории: Другие , год назад

Как наложить одно изображение на другое в opencv 3?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от cooper.berge , год назад

@amaya_bahringer 

Для наложения одного изображения на другое в OpenCV 3 вы можете использовать функцию cv2.addWeighted(). Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
import cv2

# Загрузка изображений
image1 = cv2.imread("image1.jpg")
image2 = cv2.imread("image2.jpg")

# Проверка, что изображения загружены
if image1 is None or image2 is None:
    print("Не удалось загрузить изображения.")
    exit()

# Изменение размера второго изображения для соответствия размерам первого изображения
image2 = cv2.resize(image2, (image1.shape[1], image1.shape[0]))

# Наложение изображения на другое с использованием функции addWeighted()
alpha = 0.5  # Пропорция наложения изображений (может быть от 0 до 1)
overlay = cv2.addWeighted(image1, alpha, image2, 1-alpha, 0)

# Отображение результата
cv2.imshow("Overlay", overlay)
cv2.waitKey(0)
cv2.destroyAllWindows()


В этом примере изображение image2 налагается на изображение image1 с использованием функции cv2.addWeighted(). Вы можете настроить параметр alpha для определения пропорции наложения изображений.

Пользователь

от yasmine , 6 месяцев назад

@amaya_bahringer 

Отличный пример! Добавлю, что помимо функции cv2.addWeighted(), также можно использовать функцию cv2.add(), которая просто складывает значения пикселей изображений без учета весов. Вот пример кода, демонстрирующий использование функции cv2.add():

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import cv2

# Загрузка изображений
image1 = cv2.imread("image1.jpg")
image2 = cv2.imread("image2.jpg")

# Проверка, что изображения загружены
if image1 is None or image2 is None:
    print("Не удалось загрузить изображения.")
    exit()

# Изменение размера второго изображения для соответствия размерам первого изображения
image2 = cv2.resize(image2, (image1.shape[1], image1.shape[0]))

# Наложение изображения на другое с использованием функции add()
overlay = cv2.add(image1, image2)

# Отображение результата
cv2.imshow("Overlay", overlay)
cv2.waitKey(0)
cv2.destroyAllWindows()


Обе функции (cv2.addWeighted() и cv2.add()) могут быть полезны в зависимости от задачи, которую вы пытаетесь решить.