0
点赞
收藏
分享

微信扫一扫

opencv(13)ROI区域图像叠加和图像混合


感兴趣区域:ROI

在图像处理领域,我们常常需要设置感兴趣区域(ROI,region of interest)来专注或者简化工作过程,也就是从图像中选择一个图像区域。

定义ROI区域的两种办法:

①使用表示矩形区域的Rect,指定矩形左上角坐标和矩形的长宽,定义一个矩形区域。

②指定感兴趣行或列的范围(range),Range是指从起始索引到终止索引(不包括终止索引)的一连段连续序列,cRange可以用来定义Range。

线性混合操作,addWeighted()函数,计算数组加权和

线性混合操作时一种典型的像素操作,两个输入。两幅图像或视频产生时间上的画面叠化效果。

//头文件命名部分
#include<opencv2/opencv.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>

using namespace std;
using namespace cv;

//全局函数声明部分
bool ROI_AddImage();

//主函数部分
int main()
{
system("color 5E");//控制台颜色
double time0 = static_cast<double>(getTickCount());

if (ROI_AddImage())
{
cout << endl << "运行成功,得出了你需要的图像~!:)";

}

time0 = ((double)getTickCount() - time0) / getTickFrequency();
cout << "此方法运行时间为:" << time0 << "秒" << endl;

waitKey(0);
return 0;
}

//ROI_AddImage()函数
bool ROI_AddImage()
{
//读入图像
Mat srcImage1 = imread("LYU.jpg");
Mat logoImage = imread("11.png");
if (!srcImage1.data) { printf("读取srcImage1错误~!\n"); return false; }
if (!logoImage.data) { printf("读取logoImage错误~!\n"); return false; }

//定义一个Mat类型并给其设定ROI区域
Mat imageROI = srcImage1(Rect(200, 250, logoImage.cols, logoImage.rows));

//加载掩膜
Mat mask = imread("11.png", 0);

//掩膜复制到ROI
logoImage.copyTo(imageROI, mask);

//显示结果
namedWindow("<1>利用ROI实现图像叠加示例窗口", 0);
cvResizeWindow("<1>利用ROI实现图像叠加示例窗口", 640, 480);
imshow("<1>利用ROI实现图像叠加示例窗口", srcImage1);

return true;
}

opencv(13)ROI区域图像叠加和图像混合_ios

opencv(13)ROI区域图像叠加和图像混合_ios_02



举报

相关推荐

0 条评论