OpenCV l'affichage de 2 images adjacentes dans la même fenêtre
J'essaie d'afficher 2 images horizontalement adjacents les uns aux autres dans la même fenêtre à l'aide d'OpenCV.
J'ai essayé d'utiliser adjustROI de la fonction pour cela.Image 1 a 1088 pixels de largeur et 2208 pixels de hauteur alors que l'Image 2 a 1280 pixels de largeur et 2208 pixels de hauteur.S'il vous plaît suggérer ce qui pourrait être mauvais dans le code ci-dessous.Tout ce que je reçois est une image de la taille de l'Image2 avec le contenu de Image2 ainsi.
Mat img_matches=Mat(2208,2368,imgorig.type());//set size as combination of img1 and img2
img_matches.adjustROI(0,0,0,-1280);
imgorig.copyTo(img_matches);
img_matches.adjustROI(0,0,1088,1280);
imgorig2.copyTo(img_matches);
OriginalL'auteur code4fun | 2012-10-30
Vous devez vous connecter pour publier un commentaire.
EDIT: Voici comment je ferais ce que vous voulez faire:
La copie des constructeurs de créer une copie de la
Mat
en-tête qui pointe vers le ROI, défini par chaqueRect
s.Code complet:
Compile avec:
EDIT2:
Voici à quoi il ressemble avec
adjustROI
:Vous devez garder une trace de ce que l'actuel ROI est, et la syntaxe pour déplacer le ROI autour de peut-être un peu de l'onu-intuitive. Le résultat est le même que le premier bloc de code.
Je viens de réaliser adjustROI se comporte légèrement différemment de ce que je suis habitué à (l'ancien C cvSetImageROI). Découvrez ma mise à jour de réponse.
j'avais essayé quelque chose de similaire.Le constructeur de copie est de donner une copie de la matrice d'origine,de sorte que lorsque j'essaie d'imprimer "img_matches" il est encore vide.Lors de l'impression de "gauche" et "droite" séparément donne à ces images
Le constructeur de copie de l'en-tête de la matrice, et non pas les données sous-jacentes. Les données sous-jacente demeure partagée avec l'image d'origine. Ainsi, lorsque vous copyTo gauche/droite, vous êtes en réalité la copie de l'image originale. Je l'ai juste essayé -- il fonctionne. Voir mon jour de réponse pour le code complet.
merci beaucoup.il a travaillé.
OriginalL'auteur mpenkov
Que la hauteur (lignes de Tapis), les images sont les mêmes, la fonction
hconcat
peut-être utilisé à l'horizontale concaténer deux images (Mat) et peut donc être utilisé pour les afficher côte-à-côte dans la même fenêtre. OpenCV doc.Il fonctionne avec les deux niveaux de gris et la couleur des images.
Par souci d'exhaustivité,
vconcat
peut être utilisé à la verticale de concaténation.OriginalL'auteur Sumit Dey
Voici une solution inspirée @misha réponse.
Au lieu d'utiliser le constructeur de copie, cette solution utilise Mat::operator()(const Rect& roi). Alors que les deux solutions sont en O(1), cette solution semble plus propre.
OriginalL'auteur Fábio Perez