简单说说ROI,就是抠图(美称感兴趣区域ROI)。详情内容通过讲解代码
任务:实现画面叠化效果(水印或者相同规格叠化)
/* 利用ROI将一幅图像叠加到另一幅图像的指定位置 */ #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream> using namespace std; using namespace cv; int main() { //【1】读入两幅图像并检查图像是否读取成功 Mat srcImage = imread("E:\\VS2015Opencv\\vs2015\\project\\picture\\cat.jpg"); Mat signal = imread("E:\\VS2015Opencv\\vs2015\\project\\picture\\04.png"); if (!srcImage.data || !signal.data) { cout << "读取图像有误,请重新输入正确路径!\n"; return false; } imshow("【萌宠】", srcImage); imshow("【信号】", signal); //【2】定义一个Mat类型并给其设定ROI区域 Mat imageROI = srcImage(Rect(600, 15, signal.cols, signal.rows)); //450,20为自定义起始点坐标 //【3】加载掩模(必须是灰度图) Mat mask = imread("E:\\VS2015Opencv\\vs2015\\project\\picture\\04.png", 0); //参数0显示为灰度图 //【4】将掩模复制到ROI signal.copyTo(imageROI, mask); //【5】显示结果 namedWindow("利用ROI实现图像叠加"); imshow("利用ROI实现图像叠加", srcImage); waitKey(0); return 0; }