C++ C++;将一个图像放置在某个位置的另一个图像的顶部

C++ C++;将一个图像放置在某个位置的另一个图像的顶部,c++,image,opencv,C++,Image,Opencv,我正在寻找一种方法,将图像放置在另一个图像的顶部,并放置在一个固定的位置 我已经能够使用cv::addWeighted将图像放置在彼此的顶部,但是当我搜索这个特定问题时,没有找到任何与C++相关的帖子 快速示例: 200x200红方块和100x100蓝方块 和 在70x70处的红方块上的蓝色方块(从蓝色方块的左上角像素开始) 建议的显式算法: 1-阅读两张图片。例如,底部0.ppm,顶部0.ppm, 2-读取覆盖的位置。例如,让“bottom.ppm”上的“top.ppm”的左上角为(x,y),

我正在寻找一种方法,将图像放置在另一个图像的顶部,并放置在一个固定的位置

我已经能够使用
cv::addWeighted
将图像放置在彼此的顶部,但是当我搜索这个特定问题时,没有找到任何与
C++
相关的帖子

快速示例:

200x200
红方块和
100x100
蓝方块

70x70处的红方块上的蓝色方块(从蓝色方块的左上角像素开始)


建议的显式算法:

1-阅读两张图片。例如,底部0.ppm,顶部0.ppm, 2-读取覆盖的位置。例如,让“bottom.ppm”上的“top.ppm”的左上角为(x,y),其中0
for(int i=0; i<top.height(); i++) {
    for(int j=0; j<top.width(), j++) {
        bottom(x+i, y+j) = top(i,j);
    }
}

for(int i=0;i您还可以创建指向原始图像矩形区域的垫子,并将蓝色图像复制到该区域:

Mat bigImage = imread("redSquare.png", -1);
Mat lilImage = imread("blueSquare.png", -1);

Mat insetImage(bigImage, Rect(70, 70, 100, 100));
lilImage.copyTo(insetImage);

imshow("Overlay Image", bigImage);
从任意大小的输入图像构建并推广到任意大小的输入图像,并进行一些错误检查:

cv::Mat bigImage = cv::imread("redSquare.png", -1);
const cv::Mat smallImage = cv::imread("blueSquare.png", -1);

const int x = 70;
const int y = 70;
cv::Mat destRoi;
try {
    destRoi = bigImage(cv::Rect(x, y, smallImage.cols, smallImage.rows));
}  catch (...) {
    std::cerr << "Trying to create roi out of image boundaries" << std::endl;
    return -1;
}
smallImage.copyTo(destRoi);

cv::imshow("Overlay Image", bigImage);
cv::Mat bigImage=cv::imread(“redSquare.png”,-1);
常量cv::Mat smallImage=cv::imread(“blueSquare.png”,-1);
常数int x=70;
常数y=70;
cv::垫破坏;
试一试{
destRoi=bigImage(cv::Rect(x,y,smallImage.cols,smallImage.rows));
}捕获(…){

std::cerr您应该指定您提供的是伪代码//用于将图像放置在位置点(70,70);smallImg.copyTo(BigImage(cv::Rect(10,10,smallImg.cols,smallImg.rows));此图像