Java DIP - Menerapkan Watermark
Dalam bab ini kita mempelajari dua cara menerapkan watermark pada gambar. Cara-cara ini adalah -
- Menerapkan Tanda Air Teks
- Menerapkan watermark Gambar
Menerapkan Tanda Air Teks
Kita gunakan OpenCV fungsi putTextuntuk menerapkan tanda air teks ke gambar. Itu dapat ditemukan di bawahCorepaket. Sintaksnya diberikan di bawah ini -
Core.putText(source, Text, Point, fontFace ,fontScale , color);
Parameter fungsi ini dijelaskan di bawah -
Sr.No. | Parameter & Deskripsi |
---|---|
1 | Source Itu adalah gambar sumber. |
2 | Text Ini adalah teks string yang akan muncul pada gambar. |
3 | Point Ini adalah titik di mana teks akan muncul pada gambar. |
4 | fontFace Jenis huruf. Misalnya - FONT_HERSHEY_SIMPLEX, FONT_HERSHEY_PLAIN, FONT_HERSHEY_COMPLEX dll. |
5 | fontScale Ini adalah faktor skala font yang dikalikan dengan ukuran dasar font tertentu. |
6 | color Ini adalah warna teks. |
Selain metode putText, ada metode lain yang disediakan oleh kelas Core. Mereka dijelaskan secara singkat -
Sr.No. | Metode & Deskripsi |
---|---|
1 | normalize(Mat src, Mat dst, double alpha, double beta, int norm_type) Ini menormalkan norma atau rentang nilai dari sebuah array. |
2 | perspectiveTransform(Mat src, Mat dst, Mat m) Ia melakukan transformasi matriks perspektif vektor. |
3 | phase(Mat x, Mat y, Mat angle) Ini menghitung sudut rotasi vektor 2D. |
4 | rectangle(Mat img, Point pt1, Point pt2, Scalar color) Ini menggambar persegi panjang yang sederhana, tebal, atau berisi. |
5 | reduce(Mat src, Mat dst, int dim, int rtype, int dtype) Ini mereduksi matriks menjadi vektor. |
6 | transform(Mat src, Mat dst, Mat m) Ia melakukan transformasi matriks dari setiap elemen array. |
Contoh
Contoh berikut menunjukkan penggunaan kelas Core untuk menerapkan watermark teks ke gambar -
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());
}
}
}
Keluaran
Saat Anda menjalankan kode yang diberikan, output berikut akan terlihat -
Gambar asli

Teks Gambar Watermark

Menerapkan Watermark Gambar pada Gambar
Kami akan menggunakan OpenCV fungsi addWeighteduntuk menerapkan watermark gambar ke gambar. Itu dapat ditemukan di bawahCorepaket. Sintaksnya diberikan di bawah ini -
Core.addWeighted(InputArray src1, alpha, src2 (Watermark image), beta, gamma, OutputArray dst);
Parameter fungsi ini dijelaskan di bawah -
Sr.No. | Parameter & Deskripsi |
---|---|
1 | src1 Ini adalah larik masukan pertama. |
2 | alpha Ini adalah bobot elemen array pertama. |
3 | src2 Ini adalah larik input kedua dengan ukuran dan nomor saluran yang sama seperti src1. |
4 | beta Ini adalah bobot elemen array kedua. |
5 | gamma Ini adalah skalar yang ditambahkan ke setiap jumlah. |
6 | dst Ini adalah larik keluaran yang memiliki ukuran dan jumlah saluran yang sama dengan larik masukan. |
Contoh
Contoh berikut menunjukkan penggunaan kelas Core untuk menerapkan watermark gambar ke gambar -
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());
}
}
}
Keluaran
Saat Anda menjalankan kode yang diberikan, output berikut akan terlihat -
Gambar asli

Gambar Watermark

Gambar Watermark
