Java opencv 叠加图片,添加logo图


转自烂代码网: Java opencv 叠加图片,添加logo图

https://trashcode.cn/post/d/88c23686-ceb6-4bad-b17e-3cd4640c2cd6

利用Java Opencv包,叠加图片

比如,有两张图片,背景图,待添加的logo图

背景图:

待添加的logo图:

1.添加Java Opencv的package,在maven中设置

<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>opencv</artifactId>
<version>4.3.0-1.5.3</version>
</dependency>

2.将logo图添加到背景图左上角位置,代码如下:

 1 import static org.bytedeco.opencv.global.opencv_imgcodecs.imread;
 2 import static org.bytedeco.opencv.global.opencv_imgcodecs.imwrite;
 3 import static org.bytedeco.opencv.global.opencv_imgproc.resize;
 4 import static org.bytedeco.opencv.helper.opencv_imgcodecs.cvLoadImage;
 5 import org.bytedeco.opencv.global.opencv_core;
 6 import org.bytedeco.opencv.opencv_core.Mat;
 7 import org.bytedeco.opencv.opencv_core.Rect;
 8 import org.bytedeco.opencv.opencv_core.Size;
 9 
10 public void overlapPhoto() {
11 //背景图
12 String sourceImg = "background.jpg";
13 //待添加的背景图logo
14 String addImg ="logo.jpg";
15 //叠加以后的图片文件名
16 String mixImgPath="overlayPhoto.jpg";
17 try {
18 //读取背景图
19 Mat srcImageMat = imread(sourceImg);
20 //读取logo图片
21 Mat addImgMat = imread(addImg);
22 //获取logo的宽
23 int addImgMatcols = addImgMat.cols();
24 //获取logo的高
25 int addImgMatrows = addImgMat.rows();
26 //logger 输出信息
27 LOGGER.info("addimg cols:{},rows:{},size:{}", addImgMatcols, addImgMatrows, addImgMat.size());
28 
29 //设置mask
30 Mat mask = imread(addImg,0);
31 
32 //设置在背景图上需要叠加的区域,如下,x,y为10开始,长宽分别为logo的长宽
33 //设置的长宽比如满足x+logo.width<=src.width,y+logo.height<=src.width...
34 //否则 throw exception
35 Mat srcRoi = new Mat(srcImageMat, new Rect(10, 10, addImgMat.cols(), addImgMat.rows()));
36 LOGGER.info("srcRoi cols:{},rows:{}", srcRoi.cols(), srcRoi.rows());
37 addImgMat.copyTo(srcRoi, mask);
38 //写入图片进行叠加
39 imwrite(mixImgPath, srcImageMat);
40 LOGGER.info(mixImgPath);
41 LOGGER.info("Overlap completed!");
42 } catch (Exception e) {
43 LOGGER.error("", e);
44 }
45 }

结果如下:

*若无logger设置,将实例中logger替换为System.out.println 即可

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM