In diesem Artikel wird hauptsächlich die Verwendung von Python zum Verarbeiten von Bildern vorgestellt, um den Pixelzugriff in Bildern zu erreichen. Jetzt können Freunde in Not auf einige der vorherigen Beispiele verweisen 🎜> Wir alle verwenden Image.open(), um ein Bild zu öffnen und dann direkt mit dem PIL-Objekt zu arbeiten. Es ist in Ordnung, wenn es nur eine einfache Operation ist, aber es ist schwieriger, wenn es etwas komplizierter ist. Daher konvertieren wir das Bild normalerweise nach dem Laden in eine Matrix, um komplexere Vorgänge auszuführen.
Verwenden Sie die Numpy-Bibliothek und die Scipy-Bibliothek in Python, um verschiedene Datenoperationen und wissenschaftliche Berechnungen durchzuführen. Wir können diese beiden Bibliotheken direkt über pip installieren
pip install numpy pip install scipy
Solange wir in Zukunft digitale Bildverarbeitung in Python durchführen, müssen wir diese Pakete importieren:
from PIL import Image import numpy as np import matplotlib.pyplot as plt
Öffnen Sie das Bild, konvertieren Sie es in eine Matrix und zeigen Sie an:
from PIL import Image import numpy as np import matplotlib.pyplot as plt img=np.array(Image.open('d:/lena.jpg')) #打开图像并转化为数字矩阵 plt.figure("dog") plt.imshow(img) plt.axis('off') plt.show()
Numpy aufrufen Die Funktion array() kann ein PIL-Objekt in ein Array-Objekt konvertieren.
Um Bildinformationen anzuzeigen, können Sie die folgende Methode verwenden:
print img.shape print img.dtype print img.size print type(img)
Wenn es sich um ein RGB-Bild handelt, dann nach der Konvertierung in ein Array wird es zu einer dreidimensionalen Matrix aus Zeilen*Spalten*Kanälen, daher können wir img[i,j,k] verwenden, um auf Pixelwerte zuzugreifen.
Beispiel 1: Öffnen Sie das Bild und fügen Sie nach dem Zufallsprinzip etwas Salz- und Pfefferrauschen hinzu
from PIL import Image import numpy as np import matplotlib.pyplot as plt img=np.array(Image.open('d:/ex.jpg')) #随机生成5000个椒盐 rows,cols,dims=img.shape for i in range(5000): x=np.random.randint(0,rows) y=np.random.randint(0,cols) img[x,y,:]=255 plt.figure("beauty") plt.imshow(img) plt.axis('off') plt.show()
Beispiel 2 : Lena-Bildbinarisierung hinzufügen, Pixelwert größer als 128 wird zu 1, andernfalls wird er zu 0
from PIL import Image import numpy as np import matplotlib.pyplot as plt img=np.array(Image.open('d:/pic/lena.jpg').convert('L')) rows,cols=img.shape for i in range(rows): for j in range(cols): if (img[i,j]<=128): img[i,j]=0 else: img[i,j]=1 plt.figure("lena") plt.imshow(img,cmap='gray') plt.axis('off') plt.show()
Wenn Sie möchten Wenn Sie mehrere Pixel bearbeiten, können Sie für den Zugriff Array-Slicing verwenden. Die Slicing-Methode gibt die Pixelwerte des Arrays zurück, auf die in bestimmten Intervallen zugegriffen wird. Hier sind einige Beispiele für Graustufenbilder:
img[i,:] = im[j,:] # 将第 j 行的数值赋值给第 i 行 img[:,i] = 100 # 将第 i 列的所有数值设为 100 img[:100,:50].sum() # 计算前 100 行、前 50 列所有数值的和 img[50:100,50:100] # 50~100 行,50~100 列(不包括第 100 行和第 100 列) img[i].mean() # 第 i 行所有数值的平均值 img[:,-1] # 最后一列 img[-2,:] (or im[-2]) # 倒数第二行
Verwandte Empfehlungen:
Das obige ist der detaillierte Inhalt vonVerwenden Sie Python, um Bilder zu verarbeiten und so den Pixelzugriff in Bildern zu erreichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!