天天看點

OpenCV 學習(四)之 将圖檔插入另一張圖檔中的實作(ROI)

/**
	 * 将一張圖檔插入另一種圖檔中
	 */
	static void exam2() {

			Mat image = Imgcodecs.imread("./images/Lena.jpg");
			Mat logo = Imgcodecs.imread("./images/logo2.jpg");

			Rect rect_logo = new Rect(150,150,220,200);//設定 logo 圖檔的剪切位置以及大小,即左上角的坐标為(150,150),寬為220,高為200
			Rect rect_image = new Rect(image.cols()-220,image.rows()-200,220,200);//設定image圖檔的剪切位置及大小,這裡注意:兩個剪切的大小大小要一緻
			
			Mat logoRoi = new Mat(logo,rect_logo);//對圖檔進行剪切
			Mat imageRoi = new Mat(image,rect_image);//對圖檔進行剪切
			
			Mat clone = image.clone();//複制一層,主要是為了獲得原來圖像的大小。也可以自己建立。
			Mat cloneRoi = new Mat(clone,rect_image);
			
			Core.add(logoRoi, imageRoi, cloneRoi);//将圖檔混入,如果圖檔大小不一樣會報錯
			
			new ShowImage(clone);//顯示圖檔,ShowImage 是自己寫的顯示圖檔的工具類
			
			logoRoi.copyTo(cloneRoi);//将圖檔替換
			new ShowImage(clone);
	}
           

注:這個類沒做圖檔為空的判斷,請自行确認圖檔路徑是否正确,或者加一個非空判斷。