Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden Sie Python, um Bilder zu verarbeiten und so den Pixelzugriff in Bildern zu erreichen

Verwenden Sie Python, um Bilder zu verarbeiten und so den Pixelzugriff in Bildern zu erreichen

不言
不言Original
2018-05-04 14:06:172460Durchsuche

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=&#39;gray&#39;)
plt.axis(&#39;off&#39;)
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:


Pythons Methode zur Verarbeitung von Excel xlrd Einführung


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!

Stellungnahme:
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