java opencv 更换图片背景色(基于ROI)

 public void test16ToPersonBackground() {
        Mat src = GeneralUtils.converMat("C:\\图片\\test\\0001.jpg");

        //抠选出背景区域
        Mat hsv = new Mat();
        Mat mask = new Mat();
        Imgproc.cvtColor(src, hsv, Imgproc.COLOR_BGR2HSV);
        Core.inRange(hsv, new Scalar(100, 100, 100), new Scalar(255, 255, 255), mask);
        GeneralUtils.saveByteImg(mask, "C:\\图片\\test\\roiMask.jpg");

        //去掉人物区域,留下背景
        Mat person = new Mat();
        Core.bitwise_not(mask, mask);
        Core.bitwise_and(src, src, person, mask);
        GeneralUtils.saveByteImg(person, "C:\\图片\\test\\person.jpg");

        //生成蓝色背景
        Mat result = Mat.zeros(src.size(), src.type());
        result.setTo(new Scalar(255, 0, 0));

        //更换背景
        Mat dst = new Mat();
        Core.bitwise_not(mask, mask);
        Core.bitwise_or(person, result, dst, mask);
        Core.add(dst, person, dst);
        GeneralUtils.saveByteImg(dst, "C:\\图片\\test\\changeBackground.jpg");

    }

文中对应的GeneralUtils如下:GeneralUtils

《百病自测》

求关注!!

你可能感兴趣的:(java,opencv,系列,opencv,java)