Java DIP - Áp dụng hình mờ

Trong chương này, chúng ta tìm hiểu hai cách áp dụng hình mờ trên hình ảnh. Những cách này là -

  • Áp dụng hình mờ văn bản
  • Áp dụng hình mờ hình ảnh

Áp dụng hình mờ văn bản

Chúng tôi sử dụng OpenCV chức năng putTextđể áp dụng hình mờ văn bản cho hình ảnh. Nó có thể được tìm thấy dướiCoregói hàng. Cú pháp của nó được đưa ra dưới đây:

Core.putText(source, Text, Point, fontFace ,fontScale , color);

Các tham số của hàm này được mô tả dưới đây:

Sr.No. Mô tả về Thông Số
1

Source

Nó là hình ảnh nguồn.

2

Text

Đây là văn bản chuỗi sẽ xuất hiện trên hình ảnh.

3

Point

Đây là điểm mà văn bản sẽ xuất hiện trên hình ảnh.

4

fontFace

Loại phông chữ. Ví dụ - FONT_HERSHEY_SIMPLEX, FONT_HERSHEY_PLAIN, FONT_HERSHEY_COMPLEX, v.v.

5

fontScale

Nó là hệ số tỷ lệ phông chữ được nhân với kích thước cơ sở cụ thể của phông chữ.

6

color

Nó là màu văn bản.

Ngoài phương thức putText, còn có các phương thức khác được cung cấp bởi lớp Core. Chúng được mô tả ngắn gọn -

Sr.No. Phương pháp & Mô tả
1

normalize(Mat src, Mat dst, double alpha, double beta, int norm_type)

Nó chuẩn hóa phạm vi chuẩn hoặc giá trị của một mảng.

2

perspectiveTransform(Mat src, Mat dst, Mat m)

Nó thực hiện phép biến đổi ma trận phối cảnh của các vectơ.

3

phase(Mat x, Mat y, Mat angle)

Nó tính toán góc quay của vectơ 2D.

4

rectangle(Mat img, Point pt1, Point pt2, Scalar color)

Nó vẽ một hình chữ nhật đơn giản, dày hoặc đầy.

5

reduce(Mat src, Mat dst, int dim, int rtype, int dtype)

Nó giảm ma trận thành một vector.

6

transform(Mat src, Mat dst, Mat m)

Nó thực hiện phép biến đổi ma trận của mọi phần tử mảng.

Thí dụ

Ví dụ sau minh họa việc sử dụng lớp Core để áp dụng hình mờ văn bản cho hình ảnh:

import org.opencv.core.Core;
import org.opencv.core.Mat;

import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;

public class Main {
   public static void main( String[] args ) {
   
      try{
         System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
         Mat source = Highgui.imread("digital_image_processing.jpg",  Highgui.CV_LOAD_IMAGE_COLOR);
         Mat destination = new Mat(source.rows(),source.cols(), source.type());  
         
         Core.putText(source, "Tutorialspoint.com", new Point  (source.rows()/2,source.cols()/2), Core.FONT_ITALIC,new Double(1),new  Scalar(255));

         Highgui.imwrite("watermarked.jpg", source);
         
      } catch (Exception e) {
         System.out.println("Error: "+e.getMessage());
      }
   }
}

Đầu ra

Khi bạn thực thi mã đã cho, kết quả sau sẽ được nhìn thấy:

Ảnh gốc

Văn bản Hình mờ

Áp dụng hình mờ hình ảnh trên hình ảnh

Chúng tôi sẽ sử dụng OpenCV chức năng addWeightedđể áp dụng hình mờ hình ảnh cho hình ảnh. Nó có thể được tìm thấy dướiCoregói hàng. Cú pháp của nó được đưa ra dưới đây:

Core.addWeighted(InputArray src1, alpha, src2 (Watermark image), beta, gamma, OutputArray dst);

Các tham số của hàm này được mô tả dưới đây:

Sr.No. Mô tả về Thông Số
1

src1

Nó là mảng đầu vào đầu tiên.

2

alpha

Nó là trọng số của các phần tử mảng đầu tiên.

3

src2

Đây là mảng đầu vào thứ hai có cùng kích thước và số kênh như src1.

4

beta

Nó là trọng số của các phần tử mảng thứ hai.

5

gamma

Nó là vô hướng được thêm vào mỗi tổng.

6

dst

Nó là mảng đầu ra có cùng kích thước và số kênh như mảng đầu vào.

Thí dụ

Ví dụ sau minh họa việc sử dụng lớp Core để áp dụng hình mờ hình ảnh cho hình ảnh:

import org.opencv.core.Core;
import org.opencv.core.Mat;

import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;

public class Main {
   public static void main( String[] args ) {
   
      try{
         System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
         
         Mat source = Highgui.imread("digital_image_processing.jpg",  Highgui.CV_LOAD_IMAGE_COLOR);
         Mat waterMark = Highgui.imread("watermark.png",  Highgui.CV_LOAD_IMAGE_COLOR);
         Rect ROI = new Rect(waterMark.rows() * 4,waterMark.cols(),  waterMark.cols(),waterMark.rows());
         
         Core.addWeighted(source.submat(ROI), 0.8, waterMark, 0.2, 1,  source.submat(ROI));
         Highgui.imwrite("watermarkedImage.jpg", source);
         
      } catch (Exception e) {
         System.out.println("Error: " + e.getMessage());
      }
   }
}

Đầu ra

Khi bạn thực thi mã đã cho, kết quả sau sẽ được nhìn thấy:

Ảnh gốc

Hình mờ

Hình ảnh Watermarked