在openv中拼接2个图像
Stitching 2 images in opencv
我正在尝试缝合2张图像,只是为了开始摄影。我已经找到了关键点,使用RANSAC找到了同质性,但我不知道如何对齐这2张图片(我是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
,其中是扭曲的第二张图像。你能告诉我怎么做吗?我也有扭曲的图像,我知道我必须改变单应矩阵,但现在我需要对齐这两个图像。谢谢你的帮助。
编辑:在Martin Beckett的帮助下,我添加了这个代码
//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);
现在可以运行了
您创建一个正确组合尺寸的新较大图像,然后在最终图像中希望它们的位置上生成现有图像大小的roi,并将现有图像复制到roi中。
相关文章:
- VTK 图像数据,访问数组中的 1 个图像
- SDL GPU 为什么将两个图像分成两个单独的循环更快?
- 使用 Splashkit 逐个显示多个C++图像
- 在opencv c++目录中从/加载/保存多个图像
- 如何快速创建一组覆盖两个图像的图像
- 在 Qt 中显示多个图像缩略图
- 存储将单个查询图像与多个图像的列表匹配的关键点索引
- 如何将多个图像存储到多个矩阵中
- 如何使用mingw64 gcc/g 比较两个图像
- OPENCV:如何使用5点算法从来自不同相机的两个图像之间的特征匹配来计算必需矩阵
- 在计算机视觉中减去两个图像
- 如何使用任何编程语言组合序列中的多个图像
- ITK - 如何合并两个图像
- 从两个图像转换的OpenCV
- 如何在移动滑块时串联加载和显示多个图像?
- 使用 CUDA 迭代多个图像会提高性能吗?
- SDL_RenderCopy仅在Android上显示第一个图像
- 如何使用qfiledialog和提升来保存多个图像
- 如何优化多个图像缝合
- 如何使用终端命令从C++程序打开多个图像