Добавление двух изображений разного размера или заполнение белыми пикселями, чтобы увеличить его в Python - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть изображение размером 1000x300, я хочу сделать изображение размером 4992x6400. В основном Я не хочу изменять размер изображения

Так что есть два разных способа, я думал, что мы можем сделать.

  1. Мы можем создать белое изображение нужного размера, равное 4992x6400, и добавить белое пиксельное изображение с меньшим изображением
import cv2
WhiteBackground = np.full(img.shape, 255, dtype=np.uint8)
cv2.imwrite(r"white.png",WhiteBackground)
readWhiteImage=cv2.imread(r"white.png")
readSmallImage=cv2.imread(r"small.png")

После этого кода выше, я Я был поражен, как добавить два изображения разных размеров, которые я пытался использовать cv2.add и numpy.add, поскольку изображения имеют другой размер, а также использовал cv2.addWeighted, но ни одно из них не было успешным.

Я понял, что cv2.add и numpy .add не будут работать, поскольку изображения имеют разный размер, но понятия не имеем о cv2.addWeighted, поскольку это также выдает ошибку из-за разного размера

Заполнение белыми пикселями для удержания небольших изображений в левом верхнем углу и добавление белых пикселов к левому и нижнему краю .. Я не представлял, как этого добиться ...

Пожалуйста, помогите над этим. Входное изображение Input_Small image

Ожидаемый выход enter image description here

1 Ответ

1 голос
/ 23 апреля 2020

Есть как минимум два возможных способа сделать это в Python / OpenCV. Вы можете использовать cv2.copyMakeBorder () или Numpy срезы, чтобы скопировать ввод в верхний левый угол белого фонового изображения. Вот последнее.

Ввод:

enter image description here

import cv2
import numpy as np

# read image
img = cv2.imread('numbers.png')
ht, wd, cc= img.shape

# create new image of desired size and color (white) for padding
ww = 4992 
hh = 6400
color = (255,255,255)
result = np.full((hh,ww,cc), color, dtype=np.uint8)

# set offsets for top left corner
xx = 0
yy = 0

# copy img image into center of result image
result[yy:yy+ht, xx:xx+wd] = img

# view result
cv2.imshow("result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

# save result
cv2.imwrite("numbers_inserted.jpg", result)


Результат:

enter image description here

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