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