感兴趣区域的设定是在原图中划出指定范围,此过程并不复制数据故所以对感兴趣区域的操作都将改变原图。同时由于感兴趣区域相当于另一个mat 故可以单独作为一个mat的操作来操作。
#include <QCoreApplication>
#include <opencv2/opencv.hpp>
int main(int argc, char *argv[])
{
cv::Mat imageROI;
cv::Mat image = cv::imread("E:/image/opencv2/boldt.jpg");
cv::Mat logo = cv::imread("E:/image/opencv2/logo.bmp");
// Rect定义的是矩形左上角的坐标点
imageROI = image(cv::Rect(0,0,logo.cols,logo.rows));
//直接相加法
// cv::addWeighted(imageROI,1.0,logo,0.5,0.,imageROI);
//掩模法,mask必须是灰度图
cv::Mat mask =cv::imread("E:/image/opencv2/logo.bmp",0);
logo.copyTo(imageROI,mask);
cv::imshow("with logo",image);
cv::waitKey();
}
还可以使用行和列定义感兴趣区域
imageROI = image.rowRange(start,end);
imageROI = image.colRange(start,end);