在opencv中拼接2张图像

时间:2011-11-20 23:57:46

标签: c++ image image-processing opencv

我正在尝试缝合2张图片,仅用于开始拍摄。我已经找到了关键点,使用RANSAC找到了单应性,但我无法弄清楚如何对齐这两个图像(我是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);

我需要在Mat mImg1处拼接第一张图片,Mat warpImage2在第二张图片中加载//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); 。你能告诉我怎么做吗?我也有翘曲的图像切割,我知道我必须改变单应矩阵,但现在我需要对齐这两个图像。谢谢你的帮忙。

编辑:在Martin Beckett的帮助下,我添加了这段代码

{{1}}

现在正在使用

1 个答案:

答案 0 :(得分:8)

您创建一个新的较大图像,其中包含正确的组合尺寸,然后在最终图像中您想要它们的位置创建现有图像大小的make ROIs,并将现有图像复制到ROI。