Heim >Backend-Entwicklung >Python-Tutorial >Python implementiert zwei Methoden zum Lesen und Anzeigen von Bildern
Zusätzlich zur Verwendung von opencv in Python können Sie auch Matplotlib und PIL zum Bearbeiten von Bildern verwenden. Ich bevorzuge Matpoltlib, weil seine Syntax eher Matlab ähnelt.
1. matplotlib
1. Bilder anzeigen
import matplotlib.pyplot as plt # plt 用于显示图片 import matplotlib.image as mpimg # mpimg 用于读取图片 import numpy as np lena = mpimg.imread('lena.png') # 读取和代码处于同一目录下的 lena.png # 此时 lena 就已经是一个 np.array 了,可以对它进行任意处理 lena.shape #(512, 512, 3) plt.imshow(lena) # 显示图片 plt.axis('off') # 不显示坐标轴 plt.show()
2. Einen Kanal anzeigen
3. RGB in Graustufenbild konvertieren
# 显示图片的第一个通道 lena_1 = lena[:,:,0] plt.imshow('lena_1') plt.show() # 此时会发现显示的是热量图,不是我们预想的灰度图,可以添加 cmap 参数,有如下几种添加方法: plt.imshow('lena_1', cmap='Greys_r') plt.show() img = plt.imshow('lena_1') img.set_cmap('gray') # 'hot' 是热量图 plt.show()Es gibt keine geeignete Funktion in matplotlib, um ein RGB-Bild in ein Graustufenbild umzuwandeln. Sie können eine nach der Formel anpassen:
4 das Bild
def rgb2gray(rgb): return np.dot(rgb[...,:3], [0.299, 0.587, 0.114]) gray = rgb2gray(lena) # 也可以用 plt.imshow(gray, cmap = plt.get_cmap('gray')) plt.imshow(gray, cmap='Greys_r') plt.axis('off') plt.show()Hier wird Scipy verwendet
5. Speichern Sie das Bild
from scipy import misc lena_new_sz = misc.imresize(lena, 0.5) # 第二个参数如果是整数,则为百分比,如果是tuple,则为输出图像的尺寸 plt.imshow(lena_new_sz) plt.axis('off') plt.show()5.1 Speichern Sie das von matplotlib gezeichnete BildDiese Methode ist geeignet zum Speichern aller von matplotlib gezeichneten Bilder, äquivalent zu einer Bildschirmaufnahme.
5.2 Array als Bild speichern
plt.imshow(lena_new_sz) plt.axis('off') plt.savefig('lena_new_sz.png')
5.3 Array direkt speichern
from scipy import misc misc.imsave('lena_new_sz.png', lena_new_sz)Nach dem Lesen können Sie das Bild weiterhin entsprechend der Darstellungsmethode des Arrays anzeigen Vorher. Diese Methode führt überhaupt nicht zu einem Verlust der Bildqualität1. Konvertieren Sie das PIL-Bildbild in Numpy-Array
np.save('lena_new_sz', lena_new_sz) # 会在保存的名字后面自动加上.npy img = np.load('lena_new_sz.npy') # 读取前面保存的数组3. Speichern Sie das PIL-BildRufen Sie die Speichermethode der Image-Klasse direkt auf
from PIL import Image im = Image.open('lena.png') im.show()4. Konvertieren Sie das Numpy-Array image
Hier verwenden wir matplotlib.image, um das Bildarray zu lesen. Beachten Sie, dass das hier gelesene Array vom Typ float32 mit einem Bereich von 0-1 ist, während die PIL.Image-Daten vom Typ uinit8 sind ein Bereich von 0-255, daher muss es konvertiert werden:
im_array = np.array(im) # 也可以用 np.asarray(im) 区别是 np.array() 是深拷贝,np.asarray() 是浅拷贝5. Konvertieren Sie RGB in ein Graustufenbild
from PIL import Image I = Image.open('lena.png') I.save('new_lena.png')Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass es allen beim Lernen hilft. Weitere verwandte Artikel zu zwei Methoden zum Lesen und Anzeigen von Bildern in Python finden Sie auf der chinesischen PHP-Website!