您的位置:首页 > 运维架构

利用opencv的stitcher类进行图像拼接

2017-09-10 17:38 495 查看
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;
}

需要注意的问题有三个:

①输入的图片应该是三通道的,单通道是不可以的;

②输入的单个图像不能太小,如果小的话可以放大,另外好像输入的图片数量可以弥补图像大小不足的问题,就是说如果输入图片比较小的话,可以多输入一些。

③如果图片重叠太多的话,感觉拼接的就没那么好。

我测试的拼接结果咯,前面三张是输入的图像,最后一张是拼接结果图像,感觉最后一张好像没有拼进去似的。







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: