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 更换图片背景色(基于ROI)》对你有帮助,请点赞、收藏,并留下你的观点哦!