int main()
{
Mat image = imread("../123.jpg", 1);
Mat logo = imread("../cmix8_s.bmp",1);
Mat imageROI = image(Rect(0, 0, logo.cols,logo.rows)); //定义感兴趣区域
logo.copyTo(imageROI); //将logo复制到image的imageROI中定义位置 //操作1
namedWindow("image");
imshow("image", image);
waitKey(0);
logo.copyTo(imageROI,mask); // 插入标志,只复制掩码不为0的位置 //操作2
namedWindow("image1");
imshow("image1", image);
waitKey(0);
return 0;
{
Mat image = imread("../123.jpg", 1);
Mat logo = imread("../cmix8_s.bmp",1);
Mat imageROI = image(Rect(0, 0, logo.cols,logo.rows)); //定义感兴趣区域
logo.copyTo(imageROI); //将logo复制到image的imageROI中定义位置 //操作1
namedWindow("image");
imshow("image", image);
waitKey(0);
Mat image1 = imread("../123.jpg", 0);
Mat logo1 = imread("../cmix8_s.bmp",0);
Mat imageROI = image(Rect(0, 0, logo.cols,logo.rows)); //定义感兴趣区域
logo.copyTo(imageROI,mask); // 插入标志,只复制掩码不为0的位置 //操作2
namedWindow("image1");
imshow("image1", image);
waitKey(0);
return 0;
}
====》假设imread时读入为灰色图片,在操作1的基础上,直接mask(logo),发现结果不会发生变化。
因为执行操作1之后,image的图片已经发生变化;此时操作2掩码为0的部分在操作1中已经填充为logo原图形对应data,所以看起来没有发生变化。
本文通过使用OpenCV库实现图像叠加的功能,详细介绍了如何将一个图像(如logo)精确地放置到另一张图像上的指定位置,并探讨了不同情况下图像叠加的效果差异。特别关注了掩码(mask)在图像叠加过程中的作用。
788

被折叠的 条评论
为什么被折叠?



