Ajouter rembourrage sur les images pour les mettre dans la même forme

l ont un ensemble d'images de tailles différentes (45,50,3), (69,34,3), (34,98,3). l'souhaitez ajouter un rembourrage pour ces images comme suit:

Prendre le max de la largeur et de la longueur de l'ensemble des images, puis placer l'image dans la taille que

import os
import glob
import cv2

input_path="/home/images"
os.chdir(indput_path)
images=glob.glob("*.png")
Length=[]
Width=[]
for img in images:
    img=cv2.imread(img)
    width,length=img.shape[0:2]
    Length.append(length)
    Width.append(width)
W=max(Width)
L=max(Length)

Comment pouvez l ajouter rembourrage dans opencv, de sorte que toutes les images ont la même taille? Dans l'exemple l a donné les images d'obtenir la forme de (69,98,3)

EDIT1:

Supposons que l ont une image avec une forme (49,39,3) que l'on veut transformer (80,60,3) :
input_image dimension : {largeur=49, hauteur=39}

top= hauteur/2 = 19.5

bas = hauteur/2 = 19.5

Gauche=largeur/2=24.5

droite=largeur/2=24.5

output_image dimension : {largeur=80,hauteur=60}

top=30

bas=30

gauche=40

droite=40

import cv2
import numpy as np
from matplotlib import pyplot as plt
BLUE = [255,255,255]
img1 = cv2.imread('/image.png')
constant=cv2.copyMakeBorder(img1,30,30,40,40,cv2.BORDER_CONSTANT,value=BLUE)
plt.subplot(231),plt.imshow(img1,'gray'),plt.title('ORIGINAL')
plt.subplot(233),plt.imshow(constant,'gray'),plt.title('CONSTANT')
plt.show()
print(constant.shape)


(109, 119, 3)

cependant, il est censé être (80,60,3)

EDIT2:

il a travaillé

constant= cv2.copyMakeBorder(img1,15,16,10,11,cv2.BORDER_CONSTANT,value=BLUE)
  • suivez ce lien: stackoverflow.com/questions/36044061/...
  • l avez des images en noir et blanc les pixels sont 0 ou 255. la plupart de mes personnages dans les images sont écrits en noir. Donc l besoin pixel blanc rembourrage. Cependant l ont aussi quelques images où les personnages sont en blanc pour l besoin pixel noir rembourrage. l suis demander si il y a un truc en open cv à détecter puis ajouter le blanc ou le noir pixel rembourrage
  • Que faire si l utilisation cv2.redimensionner(img, (69, 98), l'interpolation=cv2.INTER_NEAREST) , à modifier mon image. toutes mes images sont centrées. les caractères sont écrits dans le centre
  • pour le deuxième commentaire, oui il va changer votre image lorsque le rapport d'aspect allait changer.
InformationsquelleAutor vincent | 2017-04-13