Maison > Article > développement back-end > Utiliser Python pour traiter des images afin d'obtenir un accès aux pixels dans les images
Cet article présente principalement l'utilisation de python pour traiter les images afin d'obtenir l'accès aux pixels dans les images. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent se référer à certains des exemples précédents
<.> , nous utilisons tous Image.open() pour ouvrir une image, puis opérons directement sur l'objet PIL. Ce n'est pas grave s'il s'agit juste d'une opération simple, mais c'est plus difficile si c'est un peu plus compliqué. Par conséquent, généralement après avoir chargé l’image, nous convertissons l’image en matrice pour effectuer des opérations plus complexes. Utilisez la bibliothèque numpy et la bibliothèque scipy en python pour effectuer diverses opérations sur les données et calculs scientifiques. Nous pouvons installer ces deux bibliothèques directement via pippip install numpy pip install scipyÀ l'avenir, nous devrons importer ces packages chaque fois que nous effectuerons un traitement d'images numériques en python :
from PIL import Image import numpy as np import matplotlib.pyplot as pltOuvrez l'image et convertissez-la en matrice, et affichez :
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()
Appelez la fonction array() dans numpy pour convertir l'objet PIL en objet tableau. Pour afficher les informations sur l'image, vous pouvez utiliser la méthode suivante :
print img.shape print img.dtype print img.size print type(img)S'il s'agit d'une image RVB, après l'avoir convertie à un tableau, il devient une matrice tridimensionnelle de lignes*cols*canaux, nous pouvons donc utiliser img[i,j,k] pour accéder à la valeur du pixel. Exemple 1 : Ouvrez l'image et ajoutez aléatoirement du bruit de sel et de poivre
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()Exemple 2 : Binarisez l'image lena, et la valeur de pixel supérieure à 128 devient 1, sinon elle devient 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()Si vous souhaitez opérer sur plusieurs pixels, vous pouvez utiliser le découpage de tableau pour y accéder. La méthode de découpage renvoie les valeurs de pixels du tableau consulté à des intervalles spécifiés. Voici quelques exemples d'images en niveaux de gris :
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]) # 倒数第二行Recommandations associées :
Traitement Python Excel xlrd Introduction à la méthode
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!