OpenCV 在图像感兴趣区域(ROI)叠加透明Logo图像

OpenCV 在图像感兴趣区域(ROI)叠加透明Logo图像_第1张图片  

#include
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值区域不被包括在计算中。通过指定的数据值、数据范围、有限或无限值、感兴趣区和注释文件来定义图像掩模,也可以应用上述选项的任意组合作为输入来建立掩模。

 

 

 

你可能感兴趣的:(OpenCV,opencv,图像处理)