我在做Opencv视频的马赛克。我用这个例子来拼接视频的帧:detection.html。最后,我这样做是为了将新框架与在传递迭代时创建的缝纫合并起来:
Mat H = findHomography(obj, scene, CV_RANSAC);
static Mat rImg;
warpPerspective(vImg[0], rImg, H, Size(vImg[0].cols, vImg[0].rows), INTER_NEAREST);//(vImg[0], rImg, H, Size(vImg[0].cols * 2, vImg[0].rows * 2), CV_INTER_LINEAR);
static Mat final_img(Size(rImg.cols*2, rImg.rows*2), CV_8UC3);
static Mat roi1(final_img, Rect(0, 0, vImg[1].cols, vImg[1].rows));
Mat roi2(final_img, Rect(0, 0, rImg.cols, rImg.rows));
rImg.copyTo(roi2);
vImg[1].copyTo(roi1);
imwrite("stitch.jpg", final_img);
vImg[0] = final_img;
这就是我的问题:很明显,每次迭代时,缝纫都会变大,那么我如何调整它的大小,使其适合final_img
图像呢?
编辑对不起但我不得不删除图像
发布于 2015-03-25 08:26:02
对于第二个问题,,,您所观察到的是,在估计的同调中出现了一个错误。这可能来自于:
cv::findHomography()
中找到通过质量测试的匹配点。关于您的第一个问题,,您需要添加一些代码来跟踪固定坐标帧中拼接图像的当前边界。我建议选择与第一幅图像相连的坐标。
然后,当你缝一个新的图像,你真正要做的是把这个图像投射到这个坐标框上。您可以首先计算传入帧的四个角的投影坐标,测试它们是否适合当前的拼接结果,如果需要,可以将其复制到新的(更大的)图像中,然后继续对新图像进行拼接。
https://stackoverflow.com/questions/29250324
复制相似问题