Заполните изображение до размера с Python - PullRequest
0 голосов
/ 09 мая 2018

Я пишу приложение для распознавания рукописного ввода, и мои входные данные должны быть определенного размера (128x128). Когда я обнаруживаю письмо, оно выглядит так:

this

Это изображение, например, имеет размер 40x53. Я хочу сделать его 128х128, но простое изменение его размера снижает качество, особенно для небольших изображений. Я хочу как-нибудь заполнить остальные до 128x128 с 40x53 в середине. Цвет фона также должен оставаться относительно прежним. Я использую opencv Python, но я новичок в этом. Как я могу это сделать, и возможно ли это вообще?

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Здесь вы можете получить то, что вы просили, используя outputImage. В основном я добавил границу, используя метод copyMakeBorder. Вы можете сослаться это для более подробной информации. Вы должны установить желаемое значение цвета в параметре value. На данный момент это белый [255,255,255].

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

import cv2
import numpy as np
inputImage = cv2.imread('input.jpg', 1)

outputImage = cv2.copyMakeBorder(inputImage,37,38,44,44,cv2.BORDER_CONSTANT,value=[255,255,255])

resized = cv2.resize(inputImage, (128,128), interpolation = cv2.INTER_AREA)
cv2.imwrite('output.jpg', outputImage)
cv2.imwrite('resized.jpg', resized)
0 голосов
/ 09 мая 2018

Полагаю, вы хотите масштабировать свое изображение.

Этот код может помочь:

import cv2

img = cv2.imread('name_of_image', cv2.IMREAD_UNCHANGED)

# Get original size of image
print('Original Dimensions: ',img.shape)

# Percentage of the original size
scale_percent = 220

width = int(img.shape[1] * scale_percent / 100)
height = int(img.shape[0] * scale_percent / 100)
dim = (width, height)

# Resize/Scale the image
resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)

# The new size of the image
print('Resized Dimensions: ',resized.shape)

cv2.imshow("Resized image", resized)
cv2.waitKey(0)
cv2.destroyAllWindows()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...