Redimensionner une image d'un carré, mais garder l'aspect ratio c++, opencv
Est-il un moyen de redimensionner des images de n'importe quelle forme ou taille-à-dire [500x500]
mais ont le format de l'image sera maintenu, levaing l'espace vide sera rempli avec le blanc/noir de remplissage?
Donc, dire que l'image est [2000x1000]
, après avoir redimensionné pour [500x500]
l'image elle-même serait [500x250]
, avec 125
chaque côté blanc/noir de remplissage.
Quelque chose comme ceci:
Entrée
Sortie
MODIFIER
Je ne le souhaitez pas il suffit d'afficher l'image dans une fenêtre carrée, plutôt que l'image a changé à cet état, puis enregistrées dans le fichier de création d'une collection de même de la taille des images avec peu de distorsion de l'image que possible.
La seule chose que je suis venu à travers de poser une question semblable a été ce post, mais son php
.
Je peux redimensionner les images fine, de ses la plus de la noire que je ne connais pas
Remplissez votre fond noir, puis coller l'image sur elle...?
Ce n'est pas spécifiquement pour l'affichage de souci, en plus de l'avoir sauvé de cette manière
Votre image est un Mat[500,500], n'est-ce pas ?
OriginalL'auteur MLMLTL | 2015-02-17
Vous devez vous connecter pour publier un commentaire.
Pas entièrement optimisé, mais vous pouvez essayer ceci:
MODIFIER gérer la taille de la cible qui n'est pas
500x500
pixels et l'enveloppant comme une fonction.L'édition, c'est juste parfait
génial, merci, btw, vous pouvez également contrôler la couleur d'arrière-plan avec un paramètre, mais j'ai gardé les choses simples..
OriginalL'auteur Rosa Gronchi
Une approche générale:
const indique un lecteur de code que votre image d'entrée ne sera pas modifié lors de l'appel de cette fonction. Passage par référence évite la copie par la valeur qui est cher légèrement, même si la copie ne peut pas être effectuée.
OriginalL'auteur alireza
Alireza la réponse est bonne, cependant j'ai modifié le code légèrement, de sorte que je ne pas ajouter des bordures verticales lorsque l'image s'adapte à la verticale et je n'ai pas ajouter horizontale frontières lorsque l'image s'adapte à l'horizontale (ce qui est plus proche de l'original de la demande):
Mise à jour de la solution pour être plus complet
OriginalL'auteur Dragan Ostojić
Vous pouvez créer une autre image de la place de la taille que vous souhaitez, puis de placer votre image dans le milieu de la place de l'image. Quelque chose comme ceci:
OriginalL'auteur Ha Dang