Ändere die Größe eines Bildes auf ein Quadrat, behalte aber das Seitenverhältnis c ++ offencv

8

Gibt es eine Möglichkeit, die Größe von Bildern jeder Form oder Größe zu ändern, um [500x500] zu sagen, aber das Seitenverhältnis des Bildes beizubehalten, den leeren Raum mit weiß / schwarz füllen zu füllen?

Also sagen wir, dass das Bild [2000x1000] ist, nachdem die Größe auf [500x500] geändert wurde und das eigentliche Bild selbst [500x250] ist, wobei 125 jede Seite weiß / schwarz ist.

In etwa so:

Eingabe

Ausgabe

BEARBEITEN

Ich möchte das Bild nicht einfach in einem quadratischen Fenster anzeigen, sondern das Bild in diesen Zustand ändern und dann in einer Datei speichern, um eine Sammlung von Bildern gleicher Größe mit möglichst geringer Bildverzerrung zu erstellen.

Das einzige, was mir auffiel, eine ähnliche Frage zu stellen, war dieser Beitrag , aber in php .

    
MLMLTL 17.02.2015, 13:14
quelle

4 Antworten

10

Nicht vollständig optimiert, aber Sie können dies versuchen:

BEARBEITEN behandelt die Zielgröße, die nicht 500x500 Pixel ist, und wickelt sie als Funktion auf.

%Vor%     
Rosa Gronchi 17.02.2015, 14:34
quelle
5

Ein allgemeiner Ansatz:

%Vor%     
alireza 14.10.2016 16:57
quelle
4

Alirezas Antwort ist gut, aber ich habe den Code etwas modifiziert, so dass ich die vertikalen Ränder nicht hinzufüge, wenn das Bild vertikal passt, und ich füge keine horizontalen Ränder hinzu, wenn das Bild horizontal passt (das ist näher an der ursprünglichen Anfrage) ):

%Vor%     
Dragan Ostojić 28.10.2016 23:08
quelle
1

Sie können ein anderes Bild der gewünschten quadratischen Größe erstellen und dann Ihr Bild in die Mitte des quadratischen Bildes stellen. Etwas wie das:

%Vor%     
Ha Dang 17.02.2015 14:35
quelle

Tags und Links