1、绘制到背景
2、透明化处理
3、代码
// session_03.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include "stdatx.h"
/*图片重叠显示,将小图片的每一个图片都提出来,贴到大图片上*/
int overlap(Mat &car,Mat &backImage,int x,int y);
/*图片的透明显示,在图像赋值的时候要做一个判定,若RGB值为绿色,则不贴在大图上*/
int main()
{
Mat car = imread("img\\car\\uupoop1.png");
Mat car2 = imread("img\\car\\uupoop6.png");
Mat backImage = imread("img\\map\\map1.png");
namedWindow("car");
namedWindow("backImage");
overlap(car, backImage, 200, 300);
overlap(car2, backImage, 0, 300);
imshow("backImage", backImage);
imshow("car", car);
waitKey(0);
destroyAllWindows();
car.release();
return 0;
}
int overlap(Mat &car, Mat &backImage, int x, int y) {
for (int h = 0; h < car.rows; h++)
{
for (int w = 0; w < car.cols; w++)
{
Vec3b &carPixel = car.at<Vec3b>(h, w);
Vec3b &backPixel = backImage.at<Vec3b>(y+h, x+w);
if (carPixel[0] == 0 && carPixel[1] == 255 && carPixel[2] == 0)
continue;
else
{
backPixel[0] = carPixel[0];
backPixel[1] = carPixel[1];
backPixel[2] = carPixel[2];
}
}
}
return 0;
}