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 :蒙版,必须是灰度图像。

添加蒙版效果

●源图像



●蒙版图像



●操作后的图像

函数使用

●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对象
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容