OpenCV杂记(2):图像拼接(hconcat, vconcat) |
您所在的位置:网站首页 › 两张图拼接怎么中间留空白 › OpenCV杂记(2):图像拼接(hconcat, vconcat) |
OpenCV杂记(1):绘制OSD(cv::getTextSize, cv::putText)![]() 1. 简述 做图像处理或计算机视觉技术的同学都知道,我们在工作中会经常遇到需要将两幅图像拼接成为一幅图像,或者将四幅图像拼接成为一个2*2马赛克图像的需求。 OpenCV提供了多种图像拼接的API,包括水平拼接cv:hconcat,垂直拼接cv::vconcat。此外,还可以通过创建一张大图,然后使用copyTo接口将小图像依次覆盖的形式进行拼接。 假设我们有四张图,我们想对他们执行垂直拼接、水平拼接以及Mosaic拼接,接下来我们将依次进行讲解。 (1)垂直拼接 void cv::vconcat(InputArray src1, InputArray src2, OutoutArray dst) 该API接口接收两幅图像src1和src2,输出经过拼接后的图像dst。 cv::vconcat还有另外一个接口,接收多张图像进行垂直拼接。 void cv::vconcat(const Mat* src, size_t nsrc, OutputArray dst); 此处的src是一个Mat列表。 (2)水平拼接 void cv::hconcat(InputArray src1, InputArray src2, OutoutArray dst) void cv::hconcat(const Mat* src, size_t nsrc, OutputArray dst) 3. 垂直拼接OpenCV提供了快速垂直拼接接口cv::vconcat,该接口接受两个宽度相同的子图像进行拼接,拼接后的高度是两幅子图像的高度和。 如下代码演示了如何调用cv::vconcat进行图像拼接操作。 #include #include #include #include #include #include #include #include using namespace std; int main(int argc, char* argv[]) { cv::Mat img_0 = cv::imread("000001.jpg", cv::IMREAD_UNCHANGED); cv::Mat img_1 = cv::imread("000002.jpg", cv::IMREAD_UNCHANGED); cv::Mat img_2 = cv::imread("000003.jpg", cv::IMREAD_UNCHANGED); cv::Mat img_3 = cv::imread("000004.jpg", cv::IMREAD_UNCHANGED); if (img_0.empty() || img_1.empty() || img_2.empty() || img_3.empty()){ cout |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |