概念
将本图像的数据拷贝到另一个图像中。
函数讲解
●函数原型
○c++(有两个重载函数)
void copyTo( OutputArray m ) const;
void copyTo( OutputArray m, InputArray mask ) const;
○Android
void copyTo(Mat m);
void copyTo(Mat m, Mat mask);
●参数解释
○m:要拷贝到的图像
○mask :蒙版,必须是灰度图像。
添加蒙版效果
●源图像
●蒙版图像
●操作后的图像
函数使用
●c++中
#include<opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat src = imread("C:/Users/Administrator/Desktop/ic_test.jpg");//引入源图像
Mat mask = imread("C:/Users/Administrator/Desktop/wan2.png");//引入蒙版图像
if (src.empty()) {
return -1;
}
imshow("src", src);//展示源图像
cvtColor(mask, mask, CV_BGR2GRAY);
imshow("mask", mask);//展示灰度化蒙版图像
Mat dst = Mat(src.size(), src.type(), Scalar(255, 255, 255));//背景为白色
src.copyTo(dst,mask);
imshow("dst", dst);//展示最终结果
waitKey(0);
return 0;
}
●Android中
Bitmap bitmapSrc = BitmapFactory.decodeResource(getResources(),R.mipmap.ic_relief);
Bitmap bitmapMask = BitmapFactory.decodeResource(getResources(),R.mipmap.ic_wan2);
Mat src = new Mat();
Mat mask = new Mat();
Utils.bitmapToMat(bitmapSrc,src);//将Bitmap对象转换为Mat对象
Utils.bitmapToMat(bitmapMask,mask);//将Bitmap对象转换为Mat对象
Imgproc.cvtColor(mask,mask,Imgproc.COLOR_RGBA2GRAY);//将蒙版图像转为灰度图
Mat dst = new Mat(src.size(),src.type(),new Scalar(255,255,255));//背景为白色
src.copyTo(dst,mask);//将源图像的蒙版部分拷贝到目标图像中
Utils.matToBitmap(dst,bitmapSrc);//将Mat对象转换为Bitmap对象