Java DIP - Filigran Uygulama
Bu bölümde, görüntülere filigran uygulamanın iki yolunu öğreniyoruz. Bu yollar -
- Metin Filigranı Uygulama
- Görüntü filigranı uygulama
Metin Filigranı Uygulama
Kullanırız OpenCV işlevi putTextgörüntüye metin filigranı uygulamak için. Altında bulunabilirCorepaketi. Söz dizimi aşağıda verilmiştir -
Core.putText(source, Text, Point, fontFace ,fontScale , color);
Bu işlevin parametreleri aşağıda açıklanmıştır -
Sr.No. | Parametre ve Açıklama |
---|---|
1 | Source Kaynak görüntüdür. |
2 | Text Resimde görünecek olan dize metnidir. |
3 | Point Metnin görüntü üzerinde görünmesi gereken noktadır. |
4 | fontFace Yazı tipi. Örneğin - FONT_HERSHEY_SIMPLEX, FONT_HERSHEY_PLAIN, FONT_HERSHEY_COMPLEX vb. |
5 | fontScale Yazı tipine özgü temel boyutla çarpılan yazı tipi ölçek faktörüdür. |
6 | color Metin rengidir. |
PutText yönteminin yanı sıra, Core sınıfı tarafından sağlanan başka yöntemler de vardır. Kısaca açıklanmıştır -
Sr.No. | Yöntem ve Açıklama |
---|---|
1 | normalize(Mat src, Mat dst, double alpha, double beta, int norm_type) Bir dizinin norm veya değer aralığını normalleştirir. |
2 | perspectiveTransform(Mat src, Mat dst, Mat m) Vektörlerin perspektif matris dönüşümünü gerçekleştirir. |
3 | phase(Mat x, Mat y, Mat angle) 2D vektörlerin dönme açısını hesaplar. |
4 | rectangle(Mat img, Point pt1, Point pt2, Scalar color) Basit, kalın veya doldurulmuş sağa dönük bir dikdörtgen çizer. |
5 | reduce(Mat src, Mat dst, int dim, int rtype, int dtype) Bir matrisi bir vektöre indirger. |
6 | transform(Mat src, Mat dst, Mat m) Her dizi elemanının matris dönüşümünü gerçekleştirir. |
Misal
Aşağıdaki örnek, bir görüntüye metin filigranı uygulamak için Core sınıfının kullanımını gösterir -
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());
}
}
}
Çıktı
Verilen kodu çalıştırdığınızda, aşağıdaki çıktı görülür -
Gerçek görüntü

Metin Filigranlı Resim

Görüntüye Görüntü Filigranı Uygulama
Kullanacağız OpenCV işlevi addWeightedgörüntüye filigran uygulamak için. Altında bulunabilirCorepaketi. Söz dizimi aşağıda verilmiştir -
Core.addWeighted(InputArray src1, alpha, src2 (Watermark image), beta, gamma, OutputArray dst);
Bu işlevin parametreleri aşağıda açıklanmıştır -
Sr.No. | Parametre ve Açıklama |
---|---|
1 | src1 İlk girdi dizisidir. |
2 | alpha İlk dizi elemanlarının ağırlığıdır. |
3 | src2 Src1 ile aynı boyut ve kanal numarasına sahip ikinci giriş dizisidir. |
4 | beta İkinci dizi elemanlarının ağırlığıdır. |
5 | gamma Her bir toplama eklenen skalerdir. |
6 | dst Giriş dizileriyle aynı boyut ve sayıda kanala sahip çıktı dizisidir. |
Misal
Aşağıdaki örnek, bir görüntüye görüntü filigranı uygulamak için Core sınıfının kullanımını gösterir -
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());
}
}
}
Çıktı
Verilen kodu çalıştırdığınızda, aşağıdaki çıktı görülür -
Gerçek görüntü

Filigran Resmi

Filigranlı Resim
