比如现在有一张小图,是一张logo图片,然后有张大图,是一张底图,现在需要将这张logo叠加到底图的指定位置上进行显示,这个时候我们就可以使用OpenCVROI功能。

具体的示例代码如下

#include <iostream>
#include <opencv2/opencv.hpp>

int main() 
{
    cv::Mat roi_mat(1080, 640, CV_8UC3, cv::Scalar(0, 255, 0));
    cv::Mat target_mat(1080, 1920, CV_8UC3, cv::Scalar(0, 0, 255));

    cv::Rect roi(0, 0, 640, 1080);
    roi_mat.copyTo(target_mat(roi));
    cv::imwrite("result.png", target_mat);

    return 0;
}

在上述代码中创建一个640x1080的log图,颜色为绿色,然后创建了一个1920x1080的底图,颜色为红色。

然后创建了一个roi,第一个参数表示在底图上roi的起始x坐标,第二个参数表示在底图上roi的起始y坐标,第三个参数表示在底图上roi的宽度,第四个参数表示在底图上roi的高度。

最后叠加图片的效果如下:

OpenCV | C++ – 将一张图片叠加到另一张图片的指定位置上显示-StubbornHuang Blog