


Implémenter les opérations de base de traitement d'image à l'aide de Java
Avec le développement du numérique, la technologie de traitement d'images fait l'objet de plus en plus d'attention. Dans le domaine du traitement d'images, le langage Java est populaire en raison de sa simplicité, de sa facilité d'apprentissage et de ses caractéristiques multiplateformes. Cet article présentera les opérations de base du traitement d'image en Java.
1. Lire et afficher des images
En Java, les images peuvent être lues et chargées à l'aide de la classe javax.imageio.ImageIO. ImageIO fournit la méthode statique read(), qui peut lire les images stockées dans des fichiers, des URL ou des flux d'entrée et les convertir en objets Java BufferedImage.
Ce qui suit est un exemple de code pour lire et afficher une image :
import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class ImageIOExample { public static void main(String[] args) throws IOException { // 读取图像 File file = new File("image.jpg"); BufferedImage image = ImageIO.read(file); // 显示图像 ImageViewer viewer = new ImageViewer(image); viewer.show(); } }
Parmi eux, ImageViewer est une classe de visionneuse d'images personnalisée qui peut afficher des objets BufferedImage dans la fenêtre. Je n’entrerai pas dans les détails ici, les lecteurs peuvent le mettre en œuvre eux-mêmes.
2. Mise à l'échelle de l'image
La mise à l'échelle de l'image est l'une des opérations les plus élémentaires du traitement d'image. Java fournit la classe AffineTransform pour implémenter la mise à l'échelle des images. Lors de la mise à l'échelle, vous devez spécifier le facteur de mise à l'échelle, qui est le rapport de mise à l'échelle dans les directions horizontale et verticale.
Ce qui suit est un exemple de code pour la mise à l'échelle de l'image :
import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class ImageScalingExample { public static void main(String[] args) throws IOException { // 读取图像 File file = new File("image.jpg"); BufferedImage image = ImageIO.read(file); // 缩放图像 int width = image.getWidth() / 2; int height = image.getHeight() / 2; BufferedImage scaledImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = scaledImage.createGraphics(); AffineTransform transform = AffineTransform.getScaleInstance(0.5, 0.5); g2d.drawRenderedImage(image, transform); g2d.dispose(); // 显示图像 ImageViewer viewer = new ImageViewer(scaledImage); viewer.show(); } }
Dans le code ci-dessus, créez un objet BufferedImage et spécifiez sa largeur et sa hauteur, puis transmettez la méthode drawRenderedImage() méthode de l'objet Graphics2D Dessinez l'image mise à l'échelle. La méthode getScaleInstance() de la classe AffineTransform renvoie un objet AffineTransform qui implémente les facteurs d'échelle horizontale et verticale spécifiés.
3. Rotation des images
La classe AffineTransform en Java peut également être utilisée pour faire pivoter des images. Lors de la rotation, vous devez spécifier l'angle de rotation et le point central de rotation.
Ce qui suit est un exemple de code pour la rotation d'image :
import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class ImageRotationExample { public static void main(String[] args) throws IOException { // 读取图像 File file = new File("image.jpg"); BufferedImage image = ImageIO.read(file); // 旋转图像 int width = image.getWidth(); int height = image.getHeight(); BufferedImage rotatedImage = new BufferedImage(height, width, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = rotatedImage.createGraphics(); AffineTransform transform = new AffineTransform(); transform.translate(height / 2, width / 2); transform.rotate(Math.toRadians(90)); transform.translate(-width / 2, -height / 2); g2d.drawRenderedImage(image, transform); g2d.dispose(); // 显示图像 ImageViewer viewer = new ImageViewer(rotatedImage); viewer.show(); } }
Dans le code ci-dessus, créez un objet BufferedImage et spécifiez sa largeur et sa hauteur, puis transmettez la méthode drawRenderedImage() méthode de l'objet Graphics2D Dessine l'image pivotée. Les méthodes Translate() et Rotate() de la classe AffineTransform implémentent des opérations de rotation. La méthode Translate() est utilisée pour traduire le point central de l'image et la méthode rotate() est utilisée pour faire pivoter l'image.
4. Image en niveaux de gris
L'image en niveaux de gris est l'opération de conversion d'une image couleur en une image en niveaux de gris. En Java, l'image peut être mise en niveaux de gris par la formule suivante :
gray = 0,299 rouge + 0,587 vert + 0,114 * bleu
Ce qui suit est l'exemple de code de l'image en niveaux de gris :
import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class ImageGrayscaleExample { public static void main(String[] args) throws IOException { // 读取图像 File file = new File("image.jpg"); BufferedImage image = ImageIO.read(file); // 灰度化图像 int width = image.getWidth(); int height = image.getHeight(); BufferedImage grayscaleImage = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY); Graphics2D g2d = grayscaleImage.createGraphics(); g2d.drawImage(image, 0, 0, null); g2d.dispose(); // 显示图像 ImageViewer viewer = new ImageViewer(grayscaleImage); viewer.show(); } }
Dans le code ci-dessus, créez un objet BufferedImage et spécifiez son type comme TYPE_BYTE_GRAY, puis convertissez l'image couleur en une image en niveaux de gris via la méthode drawImage() du Objet Graphics2D.
5. Binarisation d'images
La binarisation d'images est l'opération de conversion d'images en niveaux de gris en images en noir et blanc. En Java, l'image peut être binarisée grâce à la formule suivante :
if (gris > seuil) {
binaire = 255;
} else {
binaire = 0 ;
}
Ce qui suit est l'exemple de code pour la binarisation d'image :
import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class ImageBinarizationExample { public static void main(String[] args) throws IOException { // 读取图像 File file = new File("image.jpg"); BufferedImage image = ImageIO.read(file); // 灰度化图像 int width = image.getWidth(); int height = image.getHeight(); BufferedImage grayscaleImage = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY); Graphics2D g2d = grayscaleImage.createGraphics(); g2d.drawImage(image, 0, 0, null); g2d.dispose(); // 二值化图像 int threshold = 128; BufferedImage binaryImage = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { int gray = grayscaleImage.getRGB(x, y) & 0xFF; int binary = 0; if (gray > threshold) { binary = 255; } binaryImage.setRGB(x, y, binary); } } // 显示图像 ImageViewer viewer = new ImageViewer(binaryImage); viewer.show(); } }
Dans le code ci-dessus, l'image couleur est d'abord convertie en image en niveaux de gris, et puis via Définir un seuil pour convertir une image en niveaux de gris en noir et blanc. Dans la boucle, vous pouvez utiliser la méthode getRGB() pour obtenir la valeur en niveaux de gris de chaque pixel, et utiliser la méthode setRGB() pour définir les pixels de l'image binaire sur 0 ou 255.
6. Filtrage d'image
Le filtrage d'image est obtenu par convolution de l'image. En Java, la classe Kernel est utilisée pour créer un noyau de convolution et la classe ConvolveOp est utilisée pour appliquer le noyau de convolution à l'image.
Ce qui suit est un exemple de code pour le filtrage d'images :
import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.awt.image.ConvolveOp; import java.awt.image.Kernel; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class ImageFilteringExample { public static void main(String[] args) throws IOException { // 读取图像 File file = new File("image.jpg"); BufferedImage image = ImageIO.read(file); // 定义卷积核 float[] kernelData = {-1, -1, -1, -1, 9, -1, -1, -1, -1}; Kernel kernel = new Kernel(3, 3, kernelData); // 滤波图像 int width = image.getWidth(); int height = image.getHeight(); BufferedImage filteredImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = filteredImage.createGraphics(); ConvolveOp op = new ConvolveOp(kernel); op.filter(image, filteredImage); g2d.drawImage(filteredImage, 0, 0, null); g2d.dispose(); // 显示图像 ImageViewer viewer = new ImageViewer(filteredImage); viewer.show(); } }
Dans le code ci-dessus, créez d'abord un objet Kernel et définissez ses données sur [-1, -1, - 1 , -1, 9, -1, -1, -1, -1], représente un noyau de convolution 3x3. Le noyau de convolution est ensuite appliqué à l'image à l'aide de la classe ConvolveOp. Pendant le processus de filtrage, vous pouvez utiliser la méthode setRGB() pour écrire les données de pixels convoluées dans l'image filtrée.
Résumé
Cet article présente les opérations de base du traitement d'image en Java, notamment la lecture et l'affichage des images, la mise à l'échelle de l'image, la rotation de l'image, les niveaux de gris de l'image et la binaireisation et l'image de l'image. filtration. Java fournit une multitude de classes et de méthodes de traitement d'image qui peuvent facilement implémenter diverses opérations de traitement d'image. Les lecteurs peuvent étudier davantage la technologie de traitement d'image en fonction de leurs propres besoins et mettre en œuvre des fonctions plus riches dans des applications pratiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

PHP est un langage de script largement utilisé du côté du serveur, particulièrement adapté au développement Web. 1.Php peut intégrer HTML, traiter les demandes et réponses HTTP et prend en charge une variété de bases de données. 2.PHP est utilisé pour générer du contenu Web dynamique, des données de formulaire de traitement, des bases de données d'accès, etc., avec un support communautaire solide et des ressources open source. 3. PHP est une langue interprétée, et le processus d'exécution comprend l'analyse lexicale, l'analyse grammaticale, la compilation et l'exécution. 4.PHP peut être combiné avec MySQL pour les applications avancées telles que les systèmes d'enregistrement des utilisateurs. 5. Lors du débogage de PHP, vous pouvez utiliser des fonctions telles que error_reportting () et var_dump (). 6. Optimiser le code PHP pour utiliser les mécanismes de mise en cache, optimiser les requêtes de base de données et utiliser des fonctions intégrées. 7

PHP et Python ont chacun leurs propres avantages, et le choix doit être basé sur les exigences du projet. 1.Php convient au développement Web, avec une syntaxe simple et une efficacité d'exécution élevée. 2. Python convient à la science des données et à l'apprentissage automatique, avec une syntaxe concise et des bibliothèques riches.

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.

Spring Boot simplifie la création d'applications Java robustes, évolutives et prêtes à la production, révolutionnant le développement de Java. Son approche "Convention sur la configuration", inhérente à l'écosystème de ressort, minimise la configuration manuelle, allo

PHP convient au développement Web, en particulier dans le développement rapide et le traitement du contenu dynamique, mais n'est pas bon dans les applications de la science des données et de l'entreprise. Par rapport à Python, PHP présente plus d'avantages dans le développement Web, mais n'est pas aussi bon que Python dans le domaine de la science des données; Par rapport à Java, PHP fonctionne moins bien dans les applications au niveau de l'entreprise, mais est plus flexible dans le développement Web; Par rapport à JavaScript, PHP est plus concis dans le développement back-end, mais n'est pas aussi bon que JavaScript dans le développement frontal.
