copyTo(拷贝图像)

概念

将本图像的数据拷贝到另一个图像中。

函数讲解

●函数原型
○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 :蒙版,必须是灰度图像。

添加蒙版效果

●源图像


copyTo(拷贝图像)_第1张图片

●蒙版图像


copyTo(拷贝图像)_第2张图片

●操作后的图像
copyTo(拷贝图像)_第3张图片

函数使用

●c++中

#include
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对象

你可能感兴趣的:(copyTo(拷贝图像))