Heim Java javaLernprogramm Implementieren Sie grundlegende Operationen der Bildverarbeitung mit Java

Implementieren Sie grundlegende Operationen der Bildverarbeitung mit Java

Jun 18, 2023 pm 04:58 PM
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();
  }

}
Nach dem Login kopieren

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();
  }

}
Nach dem Login kopieren

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();
  }

}
Nach dem Login kopieren

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();
  }

}
Nach dem Login kopieren

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();
  }

}
Nach dem Login kopieren

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();
  }

}
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1666
14
PHP-Tutorial
1272
29
C#-Tutorial
1251
24
Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

PHP: Eine Schlüsselsprache für die Webentwicklung PHP: Eine Schlüsselsprache für die Webentwicklung Apr 13, 2025 am 12:08 AM

PHP ist eine Skriptsprache, die auf der Serverseite weit verbreitet ist und insbesondere für die Webentwicklung geeignet ist. 1.PHP kann HTML einbetten, HTTP -Anforderungen und Antworten verarbeiten und eine Vielzahl von Datenbanken unterstützt. 2.PHP wird verwendet, um dynamische Webinhalte, Prozessformdaten, Zugriffsdatenbanken usw. mit starker Community -Unterstützung und Open -Source -Ressourcen zu generieren. 3. PHP ist eine interpretierte Sprache, und der Ausführungsprozess umfasst lexikalische Analyse, grammatikalische Analyse, Zusammenstellung und Ausführung. 4.PHP kann mit MySQL für erweiterte Anwendungen wie Benutzerregistrierungssysteme kombiniert werden. 5. Beim Debuggen von PHP können Sie Funktionen wie error_reporting () und var_dump () verwenden. 6. Optimieren Sie den PHP-Code, um Caching-Mechanismen zu verwenden, Datenbankabfragen zu optimieren und integrierte Funktionen zu verwenden. 7

PHP vs. Python: Verständnis der Unterschiede PHP vs. Python: Verständnis der Unterschiede Apr 11, 2025 am 12:15 AM

PHP und Python haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1.PHP eignet sich für die Webentwicklung mit einfacher Syntax und hoher Ausführungseffizienz. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit präziser Syntax und reichhaltigen Bibliotheken.

Php gegen andere Sprachen: Ein Vergleich Php gegen andere Sprachen: Ein Vergleich Apr 13, 2025 am 12:19 AM

PHP eignet sich für die Webentwicklung, insbesondere für die schnelle Entwicklung und Verarbeitung dynamischer Inhalte, ist jedoch nicht gut in Anwendungen auf Datenwissenschaft und Unternehmensebene. Im Vergleich zu Python hat PHP mehr Vorteile in der Webentwicklung, ist aber nicht so gut wie Python im Bereich der Datenwissenschaft. Im Vergleich zu Java wird PHP in Anwendungen auf Unternehmensebene schlechter, ist jedoch flexibler in der Webentwicklung. Im Vergleich zu JavaScript ist PHP in der Back-End-Entwicklung präziser, ist jedoch in der Front-End-Entwicklung nicht so gut wie JavaScript.

PHP vs. Python: Kernmerkmale und Funktionen PHP vs. Python: Kernmerkmale und Funktionen Apr 13, 2025 am 12:16 AM

PHP und Python haben jeweils ihre eigenen Vorteile und eignen sich für verschiedene Szenarien. 1.PHP ist für die Webentwicklung geeignet und bietet integrierte Webserver und reichhaltige Funktionsbibliotheken. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit prägnanter Syntax und einer leistungsstarken Standardbibliothek. Bei der Auswahl sollte anhand der Projektanforderungen festgelegt werden.

Advanced Photoshop Tutorial: Master -Retusche & Compositing Advanced Photoshop Tutorial: Master -Retusche & Compositing Apr 17, 2025 am 12:10 AM

Zu den erweiterten Photoshop -Technologien von Photoshop Photo Bearbeitung und Synthese gehören: 1. Verwenden Sie Schichten, Masken und Anpassungsschichten für grundlegende Operationen; 2. Verwenden Sie Bildpixelwerte, um Photo -Bearbeitungseffekte zu erzielen. 3.. Verwenden Sie mehrere Schichten und Masken für die komplexe Synthese; 4. Verwenden Sie "Verflüssigungswerkzeuge", um die Gesichtsmerkmale anzupassen. 5. Verwenden Sie die "Frequency Separation" -Technologie, um eine delikate Fotobearbeitung durchzuführen. Diese Technologien können die Bildverarbeitungsstufe verbessern und Effekte auf professioneller Ebene erzielen.

Auswirkungen von PHP: Webentwicklung und darüber hinaus Auswirkungen von PHP: Webentwicklung und darüber hinaus Apr 18, 2025 am 12:10 AM

PhPhas significantantyPactedWebDevelopmentAndendendsbeyondit.1) iTpowersMAjorPlatforms-LikewordpressandExcelsInDatabaseInteractions.2) php'SadaptabilityAllowStoscaleForLargeApplicationsfraMe-Linien-Linien-Linien-Linienkripte

PHP: Die Grundlage vieler Websites PHP: Die Grundlage vieler Websites Apr 13, 2025 am 12:07 AM

Die Gründe, warum PHP für viele Websites der bevorzugte Technologie -Stack ist, umfassen die Benutzerfreundlichkeit, die starke Unterstützung der Community und die weit verbreitete Verwendung. 1) Einfach zu erlernen und zu bedienen, geeignet für Anfänger. 2) eine riesige Entwicklergemeinschaft und eine reichhaltige Ressourcen haben. 3) in WordPress, Drupal und anderen Plattformen häufig verwendet. 4) Integrieren Sie eng in Webserver, um die Entwicklung der Entwicklung zu vereinfachen.

See all articles