opencv将图像拷贝到待合并图像的感兴趣区域

news/2024/7/21 7:38:17 标签: opencv, 计算机视觉, 图像处理

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

#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;
}

在这里插入图片描述

这个是原作者的,

下面是我自己改的,其中一部分代码,随意复制到感兴趣区域,

//创建拼接后的图,需提前计算图的大小
//Mat outimage(gray_left_image.cols + gray_right_image.cols-width, gray_left_image.rows,CV_8UC1); //这样建立,下面拷贝好像出错
																																																									        //了,不想验证了,

Mat outimage;
Size size(gray_left_image.cols + gray_right_image.cols-width, MAX(gray_left_image.rows, gray_right_image.rows));
outimage.create(size, CV_MAKETYPE(gray_left_image.depth(), 1));//我的是灰度图,写1,上面的3,是rgb图
outimage = Scalar::all(0);
cout << "outimage.cols:" << outimage.cols<< endl;

 //在新建合并图像中设置感兴趣区域	
Mat outImg_left, outImg_right;
outImg_left = outimage(Rect(0, 0, gray_left_image.cols-width, gray_left_image.rows));
outImg_right = outimage(Rect(gray_right_image.cols, 0,  gray_right_image.cols-width, gray_right_image.rows));//起始位置,后面两个是图像宽度,高度
cout << "outImg_left.cols:" << outImg_left.cols<< endl;
cout << "outImg_right.cols:" << outImg_right.cols<< endl;

//将待拷贝图像拷贝到感性趣区域中
outImg_left_src.copyTo(outImg_left);
outImg_right_src.copyTo(outImg_right);

可以看下差不多是下面图这样,没有图了,删除了,用了这样张,反正差不多意思,复制,到指定位置。
在这里插入图片描述


http://www.niftyadmin.cn/n/883476.html

相关文章

OpenCV SURF图像拼接、配准和图像融合技术(一)

SURF的构建流程是&#xff1a;构建Hessian矩阵、H矩阵判别式、构建尺度空间、精确定位特征点、主方向确定、特征点描述子生成、误匹配点剔除、融合图像、优化连接处的图像。 下面是 博主抄袭别人改进的 //zjy 2021.7.19 周五 SURF图像融合 #include <iostream> #i…

Opencv Surf特征实现图像无缝拼接生成全景图像(二)

https://blog.csdn.net/b695886658/article/details/80856080?utm_mediumdistribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0.essearch_pc_relevant&spm1001.2101.3001.4242.1 找到图像1和图像2中最强的匹配点所在的位置通过映射矩阵变换…

Opencv Surf特征实现图像无缝拼接生成全景图像(三)

转自&#xff1a;https://guo-pu.blog.csdn.net/article/details/90657830 图像拼接在实际的应用场景很广&#xff0c;比如无人机航拍&#xff0c;遥感图像等等&#xff0c;图像拼接是进一步做图像理解基础步骤&#xff0c;拼接效果的好坏直接影响接下来的工作&#xff0c;所以…

Opencv stitcher图像无缝拼接生成全景图像(四)

转自&#xff1a;https://blog.csdn.net/hanshuning/article/details/41149137?utm_mediumdistribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-0.no_search_link&spm1001.2101.3001.4242.1 #include #include #include #include “opencv2/highgui/…

opencv,上下左右,实现图像拼接(五)

转自&#xff1a;https://www.jb51.net/article/154643.htm #include <iostream> #include <core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> using namespace std; using namespace cv; int main() …

HiPQTools工具中找不到HiPQStitchingTool(一)

要用hisi的芯片做拼接&#xff0c;就要用到HiPQTools工具中的HiPQStitchingTool插件&#xff0c;进行标定&#xff0c; 可是打开HiPQTools&#xff0c;没有这个插件&#xff0c;找了好久&#xff0c;还以为是版本没有更新。 下图是我已更新的图&#xff0c;有了插件&#xff0…

HiPQTools工具HiPQStitchingTool标定(二)

一、挑件海思文档重要描述 1、拼接原理&#xff1a; 使用HiPQTools工具HiPQStitchingTool进行图像拼接&#xff0c;就要先进行标定&#xff0c;确定相机之间的位置关系&#xff0c;和畸变校正&#xff0c; 前面写的文章中&#xff0c;介绍了&#xff0c;使用opencv的surf特征匹…

C 字符串函数 sprintf 详解

一、sprintf() 函数详解 由于 sprintf 跟 printf 在用法上几乎一样&#xff0c;只是打印的目的地不同而已&#xff0c;前者打印到字符串中&#xff0c;后者则直接在命令行上输出。 sprintf是个变参函数&#xff0c;定义如下&#xff1a; int sprintf( char *buffer, const ch…