用opencv手动拼接

时间:2014-02-25 07:27:52

标签: c opencv image-stitching

您好我正在尝试在不使用opencv提供的针类的情况下缝合一些图像。但是,输出意外退出。 我将用输入和输出图像解释它。

input1 enter image description here

输入2 enter image description here

预期输出enter image description here

实际输出enter image description here

我认为我的ROI复制有问题。任何人请帮忙!!!

我的拼接部分代码如下 -

std::vector< Point2f > points1,points2;
        for( int i = 0; i < matches1.size(); i++ )
           {
            points1.push_back( keypoints_input1[matches1[i].queryIdx ].pt );
            points2.push_back( keypoints_input2[matches1[i].trainIdx ].pt );
           }
        /* Find the Homography Matrix for current and next frame*/
         Mat H1 = findHomography( points2, points1, CV_RANSAC );
         /* Use the Homography Matrix to warp the images*/
        cv::Mat result1;
        warpPerspective(input2, result1, H1, Size(input2.cols+150, input2.rows+150),     INTER_CUBIC);
        Mat stitch_1(Size(input2.cols+150, input2.rows+150),CV_8UC3);
        Mat roi1(stitch_1, Rect(0, 0,  input1.cols, input1.rows));
       Mat roi2(stitch_1, Rect(0, 0, result1.cols, result1.rows));


       input2.copyTo(roi1);
    result1.copyTo(roi2);

有谁能告诉我哪里出错了?感谢。

编辑:input1(640,360)和input2(790,510)大小不同。

1 个答案:

答案 0 :(得分:0)

我希望this example可以帮助你。

测试不同的图像很有意思。

修改

试试这段代码:

Mat stitch_1(Size(input2.cols*2+ input1.rows,input2.rows*2),CV_8UC3);
Mat roi1(stitch_1, Rect(0, 0,  input1.cols, input1.rows));
Mat roi2(stitch_1, Rect(0, 0, result1.cols, result1.rows));
result1.copyTo(roi2);
input1.copyTo(roi1);
imshow("final", stitch_1);