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
求关注!!