概念
將本圖像的數(shù)據(jù)拷貝到另一個圖像中。
函數(shù)講解
●函數(shù)原型
○c++(有兩個重載函數(shù))
void copyTo( OutputArray m ) const;
void copyTo( OutputArray m, InputArray mask ) const;
○Android
void copyTo(Mat m);
void copyTo(Mat m, Mat mask);
●參數(shù)解釋
○m:要拷貝到的圖像
○mask :蒙版,必須是灰度圖像。
添加蒙版效果
●源圖像

●蒙版圖像

●操作后的圖像

函數(shù)使用
●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);//展示最終結(jié)果
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對象轉(zhuǎn)換為Mat對象
Utils.bitmapToMat(bitmapMask,mask);//將Bitmap對象轉(zhuǎn)換為Mat對象
Imgproc.cvtColor(mask,mask,Imgproc.COLOR_RGBA2GRAY);//將蒙版圖像轉(zhuǎn)為灰度圖
Mat dst = new Mat(src.size(),src.type(),new Scalar(255,255,255));//背景為白色
src.copyTo(dst,mask);//將源圖像的蒙版部分拷貝到目標(biāo)圖像中
Utils.matToBitmap(dst,bitmapSrc);//將Mat對象轉(zhuǎn)換為Bitmap對象