利用opencv的stitcher类进行图像拼接
程序员文章站
2022-07-15 07:50:46
...
opencv提供了拼接类,stitcher,用户只需要提供拼接的子图像,该函数就能给出拼接结果。
int main()
{
std::vector<Mat> imageVec;
char path1[100] = "C:\\project\\";
char path[200];
for (int i = 1; i <= 3; i++)
{
sprintf(path, "%s%d.jpg", path1, i);
Mat image = cv::imread(path);
imageVec.push_back(image.clone());
}
//不使用gpu
bool useGpu = false;
Mat result;
cv::Stitcher stitcher = cv::Stitcher::createDefault(useGpu);
cv::Stitcher::Status status = stitcher.stitch(imageVec, result);
if (status != cv::Stitcher::OK)
{
cout << "stitching error!!!" << endl << "error code: " << status << endl;
return -1;
}
else
{
cv::imwrite("C:\\project\\result.jpg", result);
}
return 0;
}
需要注意的问题有三个:
①输入的图片应该是三通道的,单通道是不可以的;
②输入的单个图像不能太小,如果小的话可以放大,另外好像输入的图片数量可以弥补图像大小不足的问题,就是说如果输入图片比较小的话,可以多输入一些。
③如果图片重叠太多的话,感觉拼接的就没那么好。
我测试的拼接结果咯,前面三张是输入的图像,最后一张是拼接结果图像,感觉最后一张好像没有拼进去似的。
上一篇: WIN10下如何使用DEBUG
下一篇: OpenCV全景图像拼接