首页 > 解决方案 > 将图像复制到另一个图像的部分

问题描述

我正在尝试将图像复制到另一个图像(将徽标放在图像的右下方)。我的代码成功地将徽标复制到房间图像上,但是当我应用蒙版时它会进行一些奇怪的拉伸。

// Overlay logo
// src = 3 channel image of a room
// logo = 3 channel image of a logo (most of the Mat is black except for the logo). 
//        logo is smaller than the room image
Mat res;
Mat thresh;
src.copyTo(res);
threshold(logo, thresh, 1, 255, CV_THRESH_BINARY);
Rect r(res.cols-logo.cols, res.rows-logo.rows, logo.cols, logo.rows);
logo.copyTo(res(r), thresh);

我的结果: 在此处输入图像描述

面具是: 在此处输入图像描述

标签: c++opencv

解决方案


您的徽标似乎是彩色图像。这意味着您的thresh图像也是彩色图像。当您将其用作蒙版时,它将被水平拉伸,因为额外的通道被解释为更多列。

尝试cvtColor(logo, grayLogo, CV_BGR2GRAY)在阈值之前添加并在阈值中使用grayLogo


推荐阅读