Как вставить изображение в opencv python - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь вставить изображение в другое изображение (большее). Я знаю, что есть способ использовать функцию image.paste (), но кажется, что она не работает для изображений, читаемых cv.imread, но работает только для изображений, открытых функцией Image.open (). И я бы также поискал код для вставки и изображения в opencv, который представляет собой код ниже.

def overlay_image_alpha(img, img_overlay, pos, alpha_mask):
    """Overlay img_overlay on top of img at the position specified by
    pos and blend using alpha_mask.

    Alpha mask must contain values within the range [0, 1] and be the
    same size as img_overlay.
    """

    x, y = pos

    # Image ranges
    y1, y2 = max(0, y), min(img.shape[0], y + img_overlay.shape[0])
    x1, x2 = max(0, x), min(img.shape[1], x + img_overlay.shape[1])

    # Overlay ranges
    y1o, y2o = max(0, -y), min(img_overlay.shape[0], img.shape[0] - y)
    x1o, x2o = max(0, -x), min(img_overlay.shape[1], img.shape[1] - x)

    # Exit if nothing to do
    if y1 >= y2 or x1 >= x2 or y1o >= y2o or x1o >= x2o:
        return

    channels = img.shape[2]

    alpha = alpha_mask[y1o:y2o, x1o:x2o]
    alpha_inv = 1.0 - alpha

    for c in range(channels):
        img[y1:y2, x1:x2, c] = (alpha * img_overlay[y1o:y2o, x1o:x2o, c] +
                                alpha_inv * img[y1:y2, x1:x2, c])

, но я получаю сообщение «IndexError: индекс 3 выходит за границы оси 2 с размером 3» ошибка. краткое объяснение того, что мне нужно сделать:

cv2.imread("largerimagepath")
cv2.imread("smallerimagepath")
##paste smaller image at some point(x,y) in largerimage

Было бы очень хорошо, если бы я мог получить код для вставки изображения и некоторые объяснения для «IndexError: индекс 3 выходит за пределы оси 2 с размером 3 "ошибка.

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