Implementieren Sie grundlegende Operationen der Bildverarbeitung mit Java
Mit der Entwicklung der digitalen Technologie hat die Bildverarbeitungstechnologie immer mehr Aufmerksamkeit erhalten. In der Bildverarbeitung ist die Java-Sprache aufgrund ihrer Einfachheit, leichten Erlernbarkeit und plattformübergreifenden Funktionen beliebt. In diesem Artikel werden die grundlegenden Vorgänge der Bildverarbeitung in Java vorgestellt.
1. Bilder lesen und anzeigen
In Java können Bilder mit der Klasse javax.imageio.ImageIO gelesen und geladen werden. ImageIO bietet die statische Methode read(), die in Dateien, URLs oder Eingabestreams gespeicherte Bilder lesen und in Java BufferedImage-Objekte konvertieren kann.
Das Folgende ist ein Beispielcode zum Lesen und Anzeigen eines Bildes:
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(); } }
Unter diesen ist ImageViewer eine benutzerdefinierte Bildbetrachterklasse, die BufferedImage-Objekte im Fenster anzeigen kann. Ich werde hier nicht auf Details eingehen, die Leser können es selbst implementieren.
2. Bildskalierung
Bildskalierung ist einer der grundlegendsten Vorgänge in der Bildverarbeitung. Java stellt die Klasse AffineTransform zur Implementierung der Bildskalierung bereit. Bei der Skalierung müssen Sie den Skalierungsfaktor angeben, also das Skalierungsverhältnis in horizontaler und vertikaler Richtung.
Das Folgende ist ein Beispielcode für die Bildskalierung:
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(); } }
Erstellen Sie im obigen Code ein BufferedImage-Objekt, geben Sie dessen Breite und Höhe an und zeichnen Sie dann das skalierte Bild über die Methode drawRenderedImage() des Graphics2D-Objekts. Die getScaleInstance()-Methode der AffineTransform-Klasse gibt ein AffineTransform-Objekt zurück, das die angegebenen horizontalen und vertikalen Skalierungsfaktoren implementiert.
3. Bildrotation
Mit der AffineTransform-Klasse in Java können auch Bildrotationsoperationen durchgeführt werden. Beim Drehen müssen Sie den Drehwinkel und den Drehmittelpunkt angeben.
Das Folgende ist ein Beispielcode für die Bilddrehung:
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(); } }
Erstellen Sie im obigen Code ein BufferedImage-Objekt, geben Sie dessen Breite und Höhe an und zeichnen Sie dann das gedrehte Bild über die Methode drawRenderedImage() des Graphics2D-Objekts. Die Methoden „translate()“ und „rotate()“ der AffineTransform-Klasse implementieren Rotationsoperationen. Die Methode „translate()“ wird zum Verschieben des Mittelpunkts des Bildes und die Methode „rotate()“ zum Drehen des Bildes verwendet.
4. Bild-Graustufen
Bild-Graustufen ist der Vorgang, bei dem ein Farbbild in ein Graustufenbild umgewandelt wird. In Java kann das Bild mit der folgenden Formel grauskaliert werden:
Grau = 0,299 Rot + 0,587 Grün + 0,114 * Blau
Das Folgende ist ein Beispielcode für ein Graustufenbild:
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(); } }
Erstellen Sie im obigen Code ein BufferedImage-Objekt und geben Sie seinen Typ als TYPE_BYTE_GRAY an und konvertieren Sie dann das Farbbild über die Methode drawImage() des Graphics2D-Objekts in ein Graustufenbild.
5. Bildbinarisierung
Bildbinarisierung ist der Vorgang der Konvertierung von Graustufenbildern in Schwarzweißbilder. In Java kann das Bild durch die folgende Formel binarisiert werden:
if (grau > Schwellenwert) {
binär = 255;
} sonst {
binär = 0;
}
Das Folgende ist ein Beispielcode für die Bildbinarisierung :
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(); } }
Im obigen Code wird das Farbbild zuerst in ein Graustufenbild umgewandelt und dann wird das Graustufenbild durch Festlegen eines Schwellenwerts in ein Schwarzweißbild umgewandelt. In der Schleife können Sie die Methode getRGB() verwenden, um den Graustufenwert jedes Pixels abzurufen, und die Methode setRGB() verwenden, um die Pixel des Binärbilds auf 0 oder 255 zu setzen.
6. Bildfilterung
Bildfilterung wird durch Falten des Bildes erreicht. In Java wird die Kernel-Klasse zum Erstellen eines Faltungskerns und die ConvolveOp-Klasse zum Anwenden des Faltungskerns auf das Bild verwendet.
Das Folgende ist ein Beispielcode für die Bildfilterung:
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(); } }
Erstellen Sie im obigen Code zunächst ein Kernel-Objekt und setzen Sie seine Daten auf [-1, -1, -1, -1, 9, -1, -1 , -1, -1] stellt einen 3x3-Faltungskern dar. Der Faltungskern wird dann mithilfe der ConvolveOp-Klasse auf das Bild angewendet. Während des Filtervorgangs können Sie die Methode setRGB() verwenden, um die gefalteten Pixeldaten in das gefilterte Bild zu schreiben.
Zusammenfassung
In diesem Artikel werden die grundlegenden Vorgänge der Bildverarbeitung in Java vorgestellt, einschließlich Lesen und Anzeigen von Bildern, Bildskalierung, Bildrotation, Bildgraustufen, Bildbinarisierung und Bildfilterung. Java bietet eine Fülle von Bildverarbeitungsklassen und -methoden, mit denen sich verschiedene Bildverarbeitungsvorgänge problemlos implementieren lassen. Leser können die Bildverarbeitungstechnologie entsprechend ihren eigenen Bedürfnissen weiter studieren und umfangreichere Funktionen in praktische Anwendungen implementieren.
Das obige ist der detaillierte Inhalt vonImplementieren Sie grundlegende Operationen der Bildverarbeitung mit Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

JavaremainsAgoodlanguageduetoitscontinuousevolutionandrobustEcosystem.1) LambdaexpressionenhanceCodereadabilityAnableFunctionalprogramm.

Javaisgratduetoitsplattformindependenz, robutepoopsupport, extensinstivibrary und Strongcommunity.1) PlattformindependenzenviajvMallowsCodetorunonvariousPlatforms.2) oopfeatures Likecapsulation, Erbe und PolymorphoseMendeularsCalablcode.3)

Die fünf Hauptmerkmale von Java sind Polymorphismus, Lambda -Ausdrücke, Streamsapi, Generika und Ausnahmebehandlung. 1. Polymorphismus ermöglicht es, Objekte verschiedener Klassen als Objekte gemeinsamer Basisklassen zu verwenden. 2. Lambda -Ausdrücke machen den Code prägnanter, insbesondere für die Handhabung von Sammlungen und Streams. 3.Streamsapi verarbeitet effizient große Datensätze und unterstützt deklarative Vorgänge. 4. Generika bieten Typensicherheit und Wiederverwendbarkeit, und während der Zusammenstellung werden Typfehler aufgenommen. 5. Ausnahmebehandlung hilft, fehlerfrei zu handhaben und zuverlässige Software zu schreiben.

Java'StopfeaturessinifificteNtationHancePSperformanceandScalability.1) Objektorientierte Principles LikepolymorphismenableFlexiBleandsCalableCode.2) garbagebackecollectionAutomatomatomatomatomatomatomatomatomatomatomatomatomatomatomatomatomatesMorymanagementbutcancauselatissues.3) Die

Zu den Kernkomponenten des JVM gehören Classloader, RunTimedataara und ExecleateEngine. 1) Classloader ist für das Laden, Verknüpfen und Initialisieren von Klassen und Schnittstellen verantwortlich. 2) Runtimedataara enthält Methoden-, Haufen-, Stapel-, PCregister- und Nativemethodstacks. 3) ExecXesionEngine besteht aus Dolmetscher, Jitcompiler und GarbagebyCollector, der für die Ausführung und Optimierung von Bytecode verantwortlich ist.

Java'sSafetyandSecurityarebolsteredby: 1) StrongyPing, die sich mit dem Verhältnis von BrevventType-Related-Related-Relating-Related-Relating-Robuations-Robust-Verhandlung, Enguringgrading, Ensuringgrealing und 4) Robustxceptionhandling, Ensuringgregradinggrocking und 4) Robustxceptionhandling, Enguringgradegry,

JavaoffersseveralKeyFeaturesthatenhanceCodingskills: 1) Objektorientierte ProgrammingallowsModelingreal-Welt, beispielhaft veranschaulicht

ThejvmisacrucialComponentThatrunsjavacodeBytranslatingIntomachine-spezifische Struktur, ImpactingPerformance, Sicherheit und Portabilität.1) TheClassloaderloads, Links und Intropionsclasss.2) Die ExecleateExexexexexexexexecutesytecodintomatinstructions.3) Memo


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Dreamweaver CS6
Visuelle Webentwicklungstools

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software
