So verwenden Sie Python, um einen Histogrammausgleich für Bilder durchzuführen
Einführung:
Der Histogrammausgleich ist eine gängige Bildverbesserungsmethode, die die Pixelwerte des Bildes anpasst, um die Graustufenverteilung des Bildes gleichmäßiger zu machen der Kontrast des Bildes. In diesem Artikel erfahren Sie, wie Sie den Histogrammausgleich von Bildern mithilfe der OpenCV-Bibliothek in Python implementieren.
1. Importieren Sie die notwendigen Bibliotheken
Zunächst müssen wir einige notwendige Bibliotheken in Python importieren: Numpy wird zum Verarbeiten von Arrays verwendet, Matplotlib wird zum Anzeigen von Bildern verwendet und CV2 wird für die Bildverarbeitung verwendet.
import numpy as np import cv2 from matplotlib import pyplot as plt
2. Laden Sie das Bild
Wir verwenden die Funktion cv2.imread(), um ein Bild zu laden. Diese Funktion akzeptiert den Pfad zur Bilddatei als Parameter und gibt ein Array zurück, das das Bild darstellt.
# 加载图像 img = cv2.imread('image.jpg', 0)
3. Berechnen Sie das Histogramm
Wir verwenden die Funktion cv2.calcHist(), um das Histogramm des Bildes zu berechnen. Diese Funktion akzeptiert ein Bildarray, einen Kanalindex, eine Maske, eine Histogrammgröße und einen Histogrammbereich als Argumente und gibt ein Array zurück, das das Histogramm des Bildes darstellt.
# 计算直方图 hist = cv2.calcHist([img],[0],None,[256],[0,256])
4. Zeichnen Sie das Originalbild und das Histogramm.
Verwenden Sie die Funktion plt.subplot() in der Matplotlib-Bibliothek, um das Originalbild bzw. das Histogramm zu zeichnen.
# 绘制原始图像和直方图 plt.subplot(121), plt.imshow(img, 'gray') plt.subplot(122), plt.plot(hist)
5. Histogrammausgleich durchführen
Verwenden Sie die Funktion cv2.equalizeHist(), um einen Histogrammausgleich für das Bild durchzuführen. Diese Funktion akzeptiert ein Bildarray als Parameter und gibt nach dem Histogrammausgleich ein Bildarray zurück.
# 进行直方图均衡化 equ = cv2.equalizeHist(img)
6. Zeichnen Sie das entzerrte Bild und das Histogramm.
Verwenden Sie außerdem die Funktion plt.subplot(), um das entzerrte Bild bzw. Histogramm zu zeichnen.
# 绘制均衡化后的图像和直方图 plt.subplot(121), plt.imshow(equ, 'gray') plt.subplot(122), plt.plot(hist)
7. Ergebnisse anzeigen
Verwenden Sie die Funktion plt.show(), um alle gezeichneten Bilder anzuzeigen.
# 显示图像 plt.show()
8. Vollständiges Codebeispiel
import numpy as np import cv2 from matplotlib import pyplot as plt # 加载图像 img = cv2.imread('image.jpg', 0) # 计算直方图 hist = cv2.calcHist([img],[0],None,[256],[0,256]) # 绘制原始图像和直方图 plt.subplot(121), plt.imshow(img, 'gray') plt.subplot(122), plt.plot(hist) # 进行直方图均衡化 equ = cv2.equalizeHist(img) # 绘制均衡化后的图像和直方图 plt.subplot(121), plt.imshow(equ, 'gray') plt.subplot(122), plt.plot(hist) # 显示图像 plt.show()
Fazit:
Durch die Verwendung der OpenCV-Bibliothek in Python können wir ganz einfach einen Histogrammausgleich für Bilder durchführen. Der Histogrammausgleich ist eine einfache und effektive Methode, die den Kontrast eines Bildes verbessern und es klarer und lebendiger machen kann. Ich hoffe, dieser Artikel kann Lesern helfen, die sich für Bildverarbeitung interessieren.
Das obige ist der detaillierte Inhalt vonSo führen Sie mit Python einen Histogrammausgleich für Bilder durch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!