2010-08-11 5 views
2

Je veux aligner deux images de différentes tailles en utilisant Opencv, En effet la fonction cvAddWeighted nous permet de combiner ou de mélanger deux images de tailles identiques ce qui n'est pas mon cas! donc je besoin d'une aide si quelqu'un sait comment mettre en œuvre cette fonction avec en tenant compte des différentes tailles pour les imagesfusionner deux images par Opencv

grâce y.m

+0

Etes-vous intéressé par la mise à l'échelle d'une image pour rester avec les mêmes imensions de l'autre? – karlphillip

Répondre

5

Première, consultez Adding Two Images with Different Size. Une autre façon de le faire serait de définir la région d'intérêt sur la plus grande image en utilisant la largeur/hauteur de la plus petite (cvSetImageROI() le fera), puis effectuer le mélange avec cvAddWeighted(). Vous trouverez du code source pour cela et here.

2

Je suppose que vous avez deux images à aligner. Vous aurez également la quantité qu'une image doit être déplacée par.

Vous pouvez créer une nouvelle image pouvant contenir les deux images après avoir été déplacée. Cela signifie, ce serait la hauteur de l'image originale + déplacement vertical et sa largeur serait la largeur de l'original * 2-déplacement horizontal.

Ensuite, vous pouvez définir des ROI sur cette image et copier des images.

+1

+1 Je suis un grand fan d'Aishack .... J'y ai appris tellement de choses ... Puis-je obtenir comment obtenir la rotation de la tête en 3D je jest besoin de savoir 3 angles ... – Wazzzy

0

Vous écrivez une fonction Rect_from_Mat qui renvoie Rect (0, 0, img.rows, img.cols).

Puis:

Rect roi = Rect_from_Mat(img1) & Rect_from_Mat(img2); 

Mat img1_roi = img1(roi), img2_roi = img2(roi); 
if(results_in_img1) 
{ 
    addWeighted(img1_roi, alpha, img2_roi, beta, gamma, img1_roi); 
    return img1; 
} 

Notez que la ligne 'addWeighted' sera (indirectement) écraser les données d'image de img1.