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: