OpenCV实现任意大小图片的合并(转)

OpenCV实现图像合并主要有两种方法 
方法一:使用Mat.push_back方法将列数相同的图像加到最后一行 
方法二: 主要思路是将图像拷贝到待合并图像的感兴趣区域 
(1)新建一个要合并的图像(容器) 
(2)在新建合并图像中设置感兴趣区域 
(3)将待拷贝图像拷贝到感性趣区域中

法1.使用Mat.push_back方法将列数相同的图像加到最后一行

注意此方法只能将图像合并到底部 
示例代码:

复制代码
#include<cv.h>
#include<highgui.h>
using namespace cv;

int main()
{
    Mat image1=imread("1.jpg");
    Mat image2=imread("2.jpg");
    if (image1.empty() || image2.empty())
    {
        printf("open error");
        return 0;
    }
    //push_back 方法将图像2拷贝到图像1的最后一行
    Mat img_merge;
    img_merge.push_back(image1);
    img_merge.push_back(image2);

    namedWindow("img_merge", 0);
    imshow("img_merge", img_merge);

    waitKey();
    return 0;
}
复制代码

法2.将图像拷贝到待合并图像的感兴趣区域

此方法可以将图像拷贝到任意区域,位置由感兴趣区域决定 
示例代码:

复制代码
#include<cv.h>
#include<highgui.h>
using namespace cv;

int main()
{
    Mat image1=imread("1.jpg");
    Mat image2=imread("2.jpg");
    if (image1.empty() || image2.empty())
    {
        printf("open error");
        return 0;
    }
    //1.新建一个要合并的图像
    Mat img_merge;
    Size size(image1.cols + image2.cols, MAX(image1.rows, image1.rows));
    img_merge.create(size, CV_MAKETYPE(image1.depth(), 3));
    img_merge = Scalar::all(0);
    Mat outImg_left, outImg_right;
    //2.在新建合并图像中设置感兴趣区域
    outImg_left = img_merge(Rect(0, 0, image1.cols, image1.rows));
    outImg_right = img_merge(Rect(image1.cols, 0, image1.cols, image1.rows));
    //3.将待拷贝图像拷贝到感性趣区域中
    image1.copyTo(outImg_left);
    image2.copyTo(outImg_right);
    namedWindow("image1", 0);
    imshow("image1", img_merge);
    waitKey();
    return 0;
}
复制代码

最后上两张合并后的图片 
方法1合成效果如图 
这里写图片描述 
方法2合成效果如图 
这里写图片描述

 

转自:https://blog.csdn.net/ktigerhero3/article/details/53105372

posted @   鸭子船长  阅读(872)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2017-08-08 Linux /bin, /sbin, /usr/bin, /usr/sbin 区别(转)
2017-08-08 rsync问题-connection refused(111)、Unknown module
2017-08-08 static_cast、dynamic_cast、const_cast和reinterpret_cast总结(转)
2016-08-08 android 获取当前系统时间
2015-08-08 Longest Substring Without Repeating Characters
点击右上角即可分享
微信分享提示