OpenCV 学习(四)之 将图片插入另一张图片中的实现(ROI)

    /**
     * 将一张图片插入另一种图片中
     */
    static void exam2() {

            Mat image = Imgcodecs.imread("./images/Lena.jpg");
            Mat logo = Imgcodecs.imread("./images/logo2.jpg");

            Rect rect_logo = new Rect(150,150,220,200);//设置 logo 图片的剪切位置以及大小,即左上角的坐标为(150,150),宽为220,高为200
            Rect rect_image = new Rect(image.cols()-220,image.rows()-200,220,200);//设置image图片的剪切位置及大小,这里注意:两个剪切的大小大小要一致

            Mat logoRoi = new Mat(logo,rect_logo);//对图片进行剪切
            Mat imageRoi = new Mat(image,rect_image);//对图片进行剪切

            Mat clone = image.clone();//复制一层,为什么要这么做我也不知道
            Mat cloneRoi = new Mat(clone,rect_image);

            Core.add(logoRoi, imageRoi, cloneRoi);//将图片混入,如果图片大小不一样会报错

            new ShowImage(clone);//显示图片,ShowImage 是自己写的显示图片的工具类

            logoRoi.copyTo(cloneRoi);//将图片替换
            new ShowImage(clone);
    }

注:这个类没做图片为空的判断,请自行确认图片路径是否正确,或者加一个非空判断。

你可能感兴趣的:(OpenCV)