2011-11-20 21 views
10

Estoy intentando unir 2 imágenes para comenzar a panography. I "he encontrado ya puntos clave, se encontró homografía usando RANSAC pero no puedo encontrar la manera de alinear estas 2 imágenes (soy nuevo en OpenCV). Ahora es parte del códigoCostura de 2 imágenes en opencv

vector<Point2f> points1, points2; 
for(int i = 0; i < good_matches.size(); i++) 
{ 
    //-- Get the keypoints from the good matches 
    points1.push_back(keypoints1[ good_matches[i].queryIdx ].pt); 
    points2.push_back(keypoints2[ good_matches[i].trainIdx ].pt); 
} 

/* Find Homography */ 
Mat H = findHomography(Mat(points2), Mat(points1), CV_RANSAC); 

/* warp the image */ 
warpPerspective(mImg2, warpImage2, H, Size(mImg2.cols*2, mImg2.rows*2), INTER_CUBIC); 

y necesito para coser Mat mImg1 donde está cargada la primera imagen y Mat warpImage2 donde está la segunda imagen deformada. ¿Pueden por favor mostrarme cómo hacer eso? También tengo la imagen deformada cortada y sé que tengo que cambiar la matriz de homografía, pero por ahora tengo que alinear . estas dos imágenes gracias por ayudar a

Editar:. Con la ayuda de Martin Beckett he añadido el código

//Point a cv::Mat header at it (no allocation is done) 
Mat final(Size(mImg2.cols*2 + mImg1.cols, mImg2.rows*2),CV_8UC3); 

//velikost img1 
Mat roi1(final, Rect(0, 0, mImg1.cols, mImg1.rows)); 
Mat roi2(final, Rect(0, 0, warpImage2.cols, warpImage2.rows)); 
warpImage2.copyTo(roi2); 
mImg1.copyTo(roi1); 
imshow("final", final); 

y está funcionando ahora

Respuesta

8

Se crea una nueva imagen más grande del tamaño combinado correcta, entonces make ROIs del tamaño de las imágenes existentes en las posiciones que ellos quieren en la imagen final y copiar las imágenes existentes para las regiones de interés .

+0

¡Gracias! Esto funcionó – Bodyboard

+0

Hice tus pasos, como editado por Bodyboard, Pero siempre obtengo la imagen final como una imagen gris totalmente. ! mientras estoy seguro de que mi imagen resultante está deformada correctamente. Cualquier ayuda será apreciada, – dervish

+3

@dervish son sus imágenes de origen 3channel? Si no, debe convertirlos antes de coser, o hacer que el resultado sea del mismo tipo que la fuente y luego convertir –

Cuestiones relacionadas