openCV图像合成

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
//#include <opencv2/cvaux.hpp>
#include <fstream>
using namespace std;
using namespace cv; int main()
{
Mat image1=imread("/Users/war/Desktop/2.jpeg");
Mat image2=imread("/Users/war/Desktop/1.jpeg");
if (image1.empty() || image2.empty())
{
printf("open error");
return ;
}
//1.新建一个要合并的图像
Mat img_merge;
Size size(image1.cols + image2.cols, MAX(image1.rows, image1.rows));
img_merge.create(size, CV_MAKETYPE(image1.depth(), ));
img_merge = Scalar::all();
Mat outImg_left, outImg_right;
//2.在新建合并图像中设置感兴趣区域
outImg_left = img_merge(Rect(, , image1.cols, image1.rows));
outImg_right = img_merge(Rect(image1.cols, , image1.cols, image1.rows));
//3.将待拷贝图像拷贝到感性趣区域中
image1.copyTo(outImg_left);
image2.copyTo(outImg_right);
namedWindow("image1", );
imshow("image1", img_merge);
waitKey();
return ;
}
openCV图像合成
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
//#include <opencv2/cvaux.hpp>
#include <fstream>
using namespace std;
using namespace cv; int main()
{
Mat image1=imread("/Users/war/Desktop/1.jpeg");
Mat image2=imread("/Users/war/Desktop/2.jpeg");
if (image1.empty() || image2.empty())
{
printf("open error");
return ;
}
//push_back 方法将图像2拷贝到图像1的最后一行
Mat img_merge;
img_merge.push_back(image1);
img_merge.push_back(image2); namedWindow("img_merge", );
imshow("img_merge", img_merge); waitKey();
return ;
}
//#include <cv.h>
#include <opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
//#include <highgui.h>
#include <iostream> using namespace cv;
using namespace std;
int main()
{
double alpha = 0.5; double beta; double input; Mat src1, src2, dst; cout << " Simple Linear Blender " <<endl;
cout << "-----------------------" << endl;
cout << "* Enter alpha [0-1]: ";
cin >> input;
if (input >= 0.0 && input <= 1.0)
{
alpha = input;
} /// Read image ( same size, same type ),注意,这里一定要相同大小,相同类型,否则出错
src1 = imread("/Users/war/Desktop/1.png");
src2 = imread("/Users/war/Desktop/2.png"); if (!src1.data) { printf("Error loading src1 \n"); return -; }
if (!src2.data) { printf("Error loading src2 \n"); return -; } /// Create Windows
namedWindow("Linear Blend", ); beta = (1.0 - alpha);
addWeighted(src1, alpha, src2, beta, 0.0, dst); imshow("Linear Blend",dst); waitKey();
return ;
}
//#include <cv.h>
#include <opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
//#include <highgui.h>
#include <iostream> using namespace cv;
using namespace std;
int main()
{
double alpha = 0.5; double beta; double input; Mat src1, src2, dst; cout << " Simple Linear Blender " <<endl;
cout << "-----------------------" << endl;
cout << "* Enter alpha [0-1]: ";
cin >> input;
if (input >= 0.0 && input <= 1.0)
{
alpha = input;
} /// Read image ( same size, same type ),注意,这里一定要相同大小,相同类型,否则出错
src1 = imread("/Users/war/Desktop/1.png");
src2 = imread("/Users/war/Desktop/2.png"); if (!src1.data) { printf("Error loading src1 \n"); return -; }
if (!src2.data) { printf("Error loading src2 \n"); return -; } /// Create Windows
namedWindow("Linear Blend", ); beta = (1.0 - alpha);
addWeighted(src1, alpha, src2, beta, 0.0, dst); imshow("Linear Blend",dst); waitKey();
return ;
}
openCV图像合成的更多相关文章
- 12 opencv图像合成
#include < stdio.h > #include < opencv2\opencv.hpp > #include < opencv2\stitching.hpp ...
- OpenCV学习笔记之课后习题练习4-1
第四章课后练习1 1.本章完整讲述了基本的输入/输出编程以及OpenCV的数据结构.下面的练习是基于前面的知识做一些应用,为后面大程序的实现提供帮助.a.创建一个程序实现以下功能:(1)从视频文件中读 ...
- Python 图像处理 OpenCV (3):图像属性、图像感兴趣 ROI 区域及通道处理
前文传送门: 「Python 图像处理 OpenCV (1):入门」 「Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像」 图像属性 图像 ...
- 使用OpenCV进行简单的人像分割与合成
图像合成 实现思路 通过背景建模的方法,对源图像中的动态人物前景进行分割,再将目标图像作为背景,进行合成操作,获得一个可用的合成影像. 实现步骤如下. 使用BackgroundSubtractorMO ...
- opencv在图像显示中文
在图像定位和模式识别时,经常需要把结果标注到图片上,标注内容可以是数字字母.矩形框等(opencv支持的)或者是中文汉字(借助freetype). 1.显示数字/矩形框 #include <op ...
- opencv中Mat与IplImage,CVMat类型之间转换
opencv中对图像的处理是最基本的操作,一般的图像类型为IplImage类型,但是当我们对图像进行处理的时候,多数都是对像素矩阵进行处理,所以这三个类型之间的转换会对我们的工作带来便利. Mat类型 ...
- opencv源码:cascadedetect
级联分类器检测类CascadeClassifier,提供了两个重要的方法: CascadeClassifier cascade_classifier; cascade_classifier.load( ...
- 基于OpenCV的车辆检测与追踪的实现
最近老师布置了一个作业,是做一个基于视频的车辆检测与追踪,用了大概两周的时间做了一个简单的,效果不是很理想,但抑制不住想把自己的一些认识写下来,这里就把一些网络上的博客整理一下分享给大家,希望帮助到大 ...
- OpenCV人脸识别Eigen算法源码分析
1 理论基础 学习Eigen人脸识别算法需要了解一下它用到的几个理论基础,现总结如下: 1.1 协方差矩阵 首先需要了解一下公式: 共公式可以看出:均值描述的是样本集合的平均值,而标准差描述的则是样本 ...
随机推荐
- HDU 1147 /// 判断两线段相交
题目大意: 给定n条线段的端点 依次放上n条线段 判断最后在最上面(不被覆盖)的线段有哪些 到当前线段后 直接与之前保存的未被覆盖的线段判断是否相交就可以了 #include <cstdio&g ...
- Git上传文件指北
PS:之前设置SSH密钥之类的步骤假设都已经完成,只需日常上传文件 1.仓库初始化 假设你已经新建好了一个仓库(New Repository),名为:RepoName 选择你代码所在的本地文件夹,鼠标 ...
- 警告(alert 消息对话框) 如果你不点击“确定”,就不能对网页做任何操作,这个小窗口就是使用alert实现的
警告(alert 消息对话框) 我们在访问网站的时候,有时会突然弹出一个小窗口,上面写着一段提示信息文字.如果你不点击"确定",就不能对网页做任何操作,这个小窗口就是使用alert ...
- Luogu P2484 [SDOI2011]打地鼠(模拟+前缀和)
P2484 [SDOI2011]打地鼠 题意 题目描述 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地 ...
- PostgreSQL问题解决--连接数过多
I am trying to connect to a Postgresql database, I am getting the following Error: Error:org.postgre ...
- Python-基本运算符与流程控制
目录 基本运算符 算术运算符 比较运算符 赋值运算符 逻辑运算符 身份运算符 位运算符 成员运算符 运算符优先级 流程控制 if 判断 单分支结构 双分支结构 多分支结构 while 循环 while ...
- pytorch 入门指南
两类深度学习框架的优缺点 动态图(PyTorch) 计算图的进行与代码的运行时同时进行的. 静态图(Tensorflow <2.0) 自建命名体系 自建时序控制 难以介入 使用深度学习框架的优点 ...
- springMVC or response redirect https
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> < ...
- 深入浅出Mybatis系列(二)---配置简介(mybatis源码篇)[转]
上篇文章<深入浅出Mybatis系列(一)---Mybatis入门>, 写了一个Demo简单体现了一下Mybatis的流程.本次,将简单介绍一下Mybatis的配置文件: 上次例子中,我们 ...
- 嵌入式开发—C语言面试题
嵌入式开发—C语言面试题 源地址:http://blog.csdn.net/xdx2ct1314/article/details/7358929 1. 用预处理指令#define 声明一个常数,用 ...