OpenCV 在图像感兴趣区域(ROI)叠加透明Logo图像
#include<opencv2/opencv.hpp> using namespace cv; int main() { Mat srcImage = imread("src.jpg"); Mat logoImage = imread("logo.png"); Mat logoImageGray; cvtColor(logoImage, logoImageGray,COLOR_BGR2GRAY); threshold(logoImageGray, logoImageGray, 180, 255, cv::THRESH_BINARY); cv::Mat mask = 255 - logoImageGray; //掩模反色 cv::Mat imROI; imROI = srcImage(cv::Rect(srcImage.cols / 2, 0, logoImage.cols, logoImage.rows)); logoImage.copyTo(imROI, mask); imwrite("result.jpg", srcImage); return 0; }
[ Opencv copyTo ]
image.copyTo(imageROI),作用是把image的内容粘贴到imageROI;
image.copyTo(imageROI,mask),作用是把mask和image重叠以后把mask中像素值为0(black)的点对应的image中的点变为透明,而保留其他点。
mask:即掩模。掩模是由0和1组成的一个二进制图像。当在某一功能中应用掩模时,1值区域被处理,被屏蔽的0值区域不被包括在计算中。通过指定的数据值、数据范围、有限或无限值、感兴趣区和注释文件来定义图像掩模,也可以应用上述选项的任意组合作为输入来建立掩模。
上一篇:
IDEA上Java项目控制台中文乱码