Java DIP - Application d'un filigrane
Dans ce chapitre, nous apprenons deux façons d'appliquer un filigrane sur des images. Ces moyens sont -
- Application d'un filigrane de texte
- Application d'un filigrane d'image
Application d'un filigrane de texte
Nous utilisons OpenCV fonction putTextpour appliquer un filigrane de texte à l'image. Il peut être trouvé sousCorepaquet. Sa syntaxe est donnée ci-dessous -
Core.putText(source, Text, Point, fontFace ,fontScale , color);
Les paramètres de cette fonction sont décrits ci-dessous -
N ° Sr. | Paramètre et description |
---|---|
1 |
Source C'est l'image source. |
2 |
Text C'est le texte de chaîne qui apparaîtrait sur l'image. |
3 |
Point C'est le point où le texte doit apparaître sur l'image. |
4 |
fontFace Type de police. Par exemple - FONT_HERSHEY_SIMPLEX, FONT_HERSHEY_PLAIN, FONT_HERSHEY_COMPLEX etc. |
5 |
fontScale C'est le facteur d'échelle de la police qui est multiplié par la taille de base spécifique à la police. |
6 |
color C'est la couleur du texte. |
En dehors de la méthode putText, il existe d'autres méthodes fournies par la classe Core. Ils sont décrits brièvement -
N ° Sr. | Méthode et description |
---|---|
1 |
normalize(Mat src, Mat dst, double alpha, double beta, int norm_type) Il normalise la norme ou la plage de valeurs d'un tableau. |
2 |
perspectiveTransform(Mat src, Mat dst, Mat m) Il effectue la transformation matricielle de perspective des vecteurs. |
3 |
phase(Mat x, Mat y, Mat angle) Il calcule l'angle de rotation des vecteurs 2D. |
4 |
rectangle(Mat img, Point pt1, Point pt2, Scalar color) Il dessine un rectangle haut-droit simple, épais ou rempli. |
5 |
reduce(Mat src, Mat dst, int dim, int rtype, int dtype) Il réduit une matrice à un vecteur. |
6 |
transform(Mat src, Mat dst, Mat m) Il effectue la transformation matricielle de chaque élément du tableau. |
Exemple
L'exemple suivant illustre l'utilisation de la classe Core pour appliquer un filigrane de texte à une image -
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());
}
}
}
Production
Lorsque vous exécutez le code donné, la sortie suivante est vue -
Image originale
Image en filigrane de texte
Application d'un filigrane d'image sur l'image
Nous allons utiliser OpenCV fonction addWeightedpour appliquer un filigrane d'image à l'image. Il peut être trouvé sousCorepaquet. Sa syntaxe est donnée ci-dessous -
Core.addWeighted(InputArray src1, alpha, src2 (Watermark image), beta, gamma, OutputArray dst);
Les paramètres de cette fonction sont décrits ci-dessous -
N ° Sr. | Paramètre et description |
---|---|
1 |
src1 C'est le premier tableau d'entrée. |
2 |
alpha C'est le poids des premiers éléments du tableau. |
3 |
src2 C'est le deuxième tableau d'entrée de la même taille et du même numéro de canal que src1. |
4 |
beta C'est le poids des deuxièmes éléments du tableau. |
5 |
gamma C'est le scalaire ajouté à chaque somme. |
6 |
dst C'est le tableau de sortie qui a la même taille et le même nombre de canaux que les tableaux d'entrée. |
Exemple
L'exemple suivant montre l'utilisation de la classe Core pour appliquer un filigrane d'image à une image -
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());
}
}
}
Production
Lorsque vous exécutez le code donné, la sortie suivante est vue -