Hinzufügen Polsterung an Bilder gelangen Sie in die gleiche Form

l haben eine Reihe von Bildern von verschiedenen Größen (45,50,3), (69,34,3), (34,98,3). l hinzufügen möchten Polsterung, um diese Bilder wie folgt:

Nehmen Sie die maximale Breite und Länge des ganzen Bildern dann setzen Sie das Bild in dieser Größe

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)

Wie kann l-Polsterung in opencv, so dass alle Bilder die selbe Größe haben? Im Beispiel l gab die Bilder erhalten, die die Form des (69,98,3)

EDIT1:

Wollen wir annehmen, dass l ein Bild mit einer Form (49,39,3) l transformieren wollen (80,60,3) :
input_image dimension : {Breite=49, heigh=39}

also oben= Hoehe/2 = 19.5

unten = Höhe/2 = 19.5

Links=Breite/2=24.5

rechts=Breite/2=24.5

output_image dimension : {width=80,height=60}

top=30

unten=30

Links=40

rechts=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)

aber es soll (80,60,3)

EDIT2:

funktionierte es

constant= cv2.copyMakeBorder(img1,15,16,10,11,cv2.BORDER_CONSTANT,value=BLUE)
überprüfen Sie diesen link: stackoverflow.com/questions/36044061/...
l schwarze und weiße Bilder, die Pixel sind entweder 0 oder 255 nur. die meisten meiner Figuren in Bildern sind in schwarzer Farbe geschrieben. So l müssen weiße pixel padding. Jedoch l haben auch einige Bilder, auf denen die Charaktere sind in weiß, also l müssen schwarze pixel padding. l ' Wanderschaft, wenn es gibt einen trick im open cv zu erkennen, dann fügen Sie weiße oder schwarze pixel padding
Was, wenn l cv2.resize(img, (69, 98), interpolation=cv2.INTER_NEAREST) , verändert Sie mein Bild. alle meine Bilder zentriert sind. die Zeichen sind geschrieben in der Mitte
für den zweiten Kommentar, ja, es wird ändern Sie Ihr Bild als das Aspekt-Verhältnis ändern würde.

InformationsquelleAutor vincent | 2017-04-13

Schreibe einen Kommentar