placer deux images côte à côte, opencv 2.3, c++
I #m la lecture de deux images, et veulent obtenir le troisième qui est juste combinaison des deux.
img_object et img_scene ne pas avoir la même taille.
int main( int argc, char** argv )
Mat combine;
Mat img_object = imread( object_filename, CV_LOAD_IMAGE_GRAYSCALE );
Mat img_scene = imread( scene_filename , CV_LOAD_IMAGE_GRAYSCALE );
if( !img_object.data || !img_scene.data )
{ std::cout<< " --(!) Error reading images " << std::endl; return -1; }
namedWindow( "Display window oject", 0 );//Create a window for display.
namedWindow( "Display window scene ", 0 );
namedWindow( "Display window combine ", 0 );
imshow( "Display window oject", img_object );
imshow( "Display window scene", img_scene );
imshow( "Display window scene", combine );
waitKey(0);
return 0;
}
OriginalL'auteur Shahgee | 2013-08-04
Vous devez vous connecter pour publier un commentaire.
Il y a un moyen très simple de l'affichage de deux images côte à côte. La fonction suivante peut être utilisé, qui est fourni par opencv.
Cette fonction peut également être utilisée pour copier un ensemble de colonnes d'une image à une autre image.
J'ai essayé hconcat avec différents nombre de lignes qu'il se bloque. Fonctionne uniquement si le nombre de lignes sont les mêmes. mais fonctionne très bien si le nombre de cols sont différents
C'est l'idée. Pour nombre variable de lignes, utilisez vconcat fonction. Mais encore une fois dans cette fonction, le nombre de colonnes doit être la même. L'utilisation de ces fonctions permet d'éliminer l'utilisation de confondre les boucles "for".
OriginalL'auteur RAJ KUMAR MISHRA
Peut-être que vous n'avez pas défini de cellSize?
Merci. Je suis en train de cellsize égal à ma personne la taille de l'image. Son 176x144.
Il suppose également que les images vectorielles ont CV_8UC3 type d'élément.
OriginalL'auteur Andrey Smorodov
Si les images ne sont pas de la même taille,
combine
's largeur sera égale à la somme de la largeur, mais la hauteur doit être la plus grande des hauteurs des deux images.Définir la combinaison de l'image comme ceci:
Noter que nous sommes juste de créer un nouveau
Mat
objet avec la hauteur égale à la hauteur maximale et la largeur égale à la largeur combinée des photos (si vous avez besoin d'une petite marge entre les images, vous devez rendre compte ici).Ensuite, vous pouvez définir des régions d'intérêt pour chaque côté à l'intérieur
combine
(à l'aide d'un commodeMat
constructeur), et enfin copie de chaque image pour le côté correspondant (ici, je suppose que l'objet va sur la gauche et la scène est sur la droite):Edit: Corrigé la faute de frappe qui TimZaman souligné.
img_object_size().la largeur doit être img_object.taille().largeur .. je ne peux pas éditer ton post parce que stackoverflow veut au moins 6 caractères pour être changé, profond soupir
OriginalL'auteur Daniel Martín
Vous pouvez le faire avec une boucle, en supposant que vos images ont la même taille :
Je n'ai pas testé, mais c'est la façon dont vous pouvez faire cette
Salut, cette méthode ne fonctionne pas, vous ne pouvez pas faire A. ligne(j) = A. ligne(i); s'il vous plaît essayez de A. ligne(j).copyTo(A. ligne(i));
OriginalL'auteur Dimitri Mockelyn
J'ai essayé de mettre plusieurs images côte à côte, juste de l'essayer.
S'il vous plaît prêter attention, lorsque vous copiez des colonnes forment une image à l'autre ce faire:
Ne pas faire ceci:
OriginalL'auteur Albert Chen