@Iceforest

Как одну картинку вставить в другую с помощью библиотеки OpenCV, если картинки разных размеров?

написал вот такой код, но картинка облака не накладывается на фон, сам фон размера 512 на 256, а облако 100 на 100, то есть облако легко влезает без уменьшения размеров, но возникает ошибка
Traceback (most recent call last):
File "/home/iceforest/PycharmProjects/python_base/python_base/lesson_016/ImageMaker.py", line 16, in
img = cv2.addWeighted(white_list, 0.9, cloud, 0.1, 0)
cv2.error: OpenCV(4.4.0) /tmp/pip-req-build-zeowd5_m/opencv/modules/core/src/arithm.cpp:666: error: (-209:Sizes of input arguments do not match) The operation is neither 'array op array' (where arrays have the same size and the same number of channels), nor 'array op scalar', nor 'scalar op array' in function 'arithm_op'

import cv2

class ImageMaker:

    def viewImage(self, image, name_of_window):
        cv2.namedWindow(name_of_window, cv2.WINDOW_NORMAL)
        cv2.imshow(name_of_window, image)
        cv2.waitKey(0)
        cv2.destroyAllWindows()

maker = ImageMaker()
white_list = cv2.imread('python_snippets/external_data/probe.jpg') #фон
cloud = cv2.imread('python_snippets/external_data/weather_img/cloud.jpg') #облако
img = cv2.addWeighted(white_list, 0.8, cloud, 0.2, 0)
cv2.imshow('image', img)
# maker.viewImage(img, 'Version')
  • Вопрос задан
  • 567 просмотров
Решения вопроса 1
@Iceforest Автор вопроса
def __init__(self):
        self.path = 'icons'
        self.white_list = cv2.imread('python_snippets/external_data/probe.jpg')
        self.cloud = cv2.imread('python_snippets/external_data/weather_img/cloud.jpg')
        self.sun = cv2.imread('python_snippets/external_data/weather_img/sun.jpg')
        self.rain = cv2.imread('python_snippets/external_data/weather_img/rain.jpg')
        self.snow = cv2.imread('python_snippets/external_data/weather_img/snow.jpg')
        self.yellow = (0, 255, 255)
        self.blue = (255, 255, 0)
        self.cyan = (255, 0, 0)
        self.black = (0, 0, 0)
        self.colors = [self.yellow,self.cyan,self.blue,self.black]
        self.weather_icons ={self.black:self.cloud,self.yellow:self.sun,self.cyan:self.rain,self.blue:self.snow}
        self.weather = {'Сплошная облачность': self.black,
                        'Небольшая облачность': self.black,
                        'Сплошная облачность, мелкий мокрый снег': self.black,
                        'Сплошная облачность, небольшой снег': self.black,
                        'Сплошная облачность, мелкий дождь':self.black,
                        'Облачно с прояснениями': self.black,
                        'Ясно': self.yellow,
                        'Дождь': self.cyan,
                        'Облачно с прояснениями, мелкий дождь':self.cyan,
                        'Снег': self.blue,
                        'Сплошная облачность, снег':self.black}
def maker(self, color, degree):
        x = 0
        y = 400
        weather_icon = self.weather_icons[color]
        self.painting_background(color, self.white_list)
        self.white_list[x:x + weather_icon.shape[0], y:y + weather_icon.shape[1]] = weather_icon
        cv2.putText(self.white_list, degree, (360, 150), cv2.FONT_HERSHEY_DUPLEX, 2, (255, 0, 0), 2, cv2.LINE_AA)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы