Skip to content

Python, Pillow: Ruotare l’immagine

Python

Il modulo Image della libreria di elaborazione delle immagini Python Pillow(PIL) fornisce il metodo rotate() per ruotare un’immagine.

Questo articolo descrive ogni parametro di rotazione().

  • Angolo di rotazione:angle
  • Filtri di ricampionamento:resample
  • Espandi la dimensione dell’immagine di output:expand
  • Coordinate del centro di rotazione:center
  • Traduzione:translate
  • Colore per l’area esterna:fillcolor

Fare riferimento al seguente articolo per l’installazione e l’utilizzo di base di Pillow (PIL).

Usa flip() e mirror() del modulo ImageOps per capovolgere l’immagine verticalmente o orizzontalmente.

Vedere il seguente articolo per la rotazione delle immagini con OpenCV, NumPy.

Carica le immagini come segue:

from PIL import Image

im = Image.open('data/src/lena.jpg')

lena

Angolo di rotazione:angle

In rotate(), specifica l’angolo di rotazione in gradi come primo angolo del parametro. Il senso di rotazione è antiorario.

Ruota di 90 gradi:

im_rotate = im.rotate(90)

Cuscino ruota 90

Ruota di 45 gradi.

im_rotate = im.rotate(45)

Cuscino ruota 45

Filtri di ricampionamento:resample

Il parametro resample può essere utilizzato per specificare il filtro di ricampionamento.

  • Image.NEAREST (vicino più vicino, predefinito)
  • Immagine.BILINEARE
  • Immagine.BICUBICA

Con Image.BICUBIC, i dettagli sono più chiari rispetto a Image.NEAREST predefinito.

im_rotate = im.rotate(45, resample=Image.BICUBIC)

Cuscino ruota 45 bicubico

Espandi la dimensione dell’immagine di output:expand

Come si vede dall’immagine di output dell’esempio precedente, per può venire di immagine predefinita, la dimensione dell’immagine output è uguale alla dimensione dell’immagine di input le parti al di fuori della regione troncate.

Se si desidera mantenere l’intera immagine ruotata, impostare il parametro espandere su True.

im_rotate = im.rotate(90, expand=True)

Cuscino ruota 90 espandi

im_rotate = im.rotate(45, expand=True)

Cuscino ruota 45 espandi

Coordinate del centro di rotazione:center

È possibile specificare la posizione del centro di rotazione con il parametro centro. Per impostazione predefinita, il centro è il centro dell’immagine.

im_rotate = im.rotate(45, center=(0, 60))

Cuscino ruota 45 cambia centro

Nel caso di expand=Vero, l’area dell’immagine di output viene determinata presupponendo che l’immagine sia ruotata attorno al centro dell’immagine.

im_rotate = im.rotate(45, center=(0, 60), expand=True)

Cuscino ruota 45 cambia centro espandi

Traduzione:translate

Puoi tradurre prima della rotazione con il parametro translate. translate è specificato da (distanza di traslazione in direzione x, distanza di traslazione in direzione y).

Senza rotazione:

im_rotate = im.rotate(0, translate=(100, 50))

Cuscino ruota 0 traduci

Ruota di 45 gradi e traduci:

im_rotate = im.rotate(45, translate=(100, 50))

Cuscino ruota 45 traduci

Se expand=Vero, l’area dell’immagine di output viene determinata presupponendo che l’immagine venga ruotata senza traslazione.

im_rotate = im.rotate(45, translate=(100, 50), expand=True)

Cuscino ruota 45 traduci espandi

Colore per l’area esterna:fillcolor

È possibile specificare il colore per l’area esterna con il colore di riempimento. Il colore predefinito è nero.

Nel caso di immagini RGB, viene specificata come una tupla di (R, G, B).

im_rotate = im.rotate(45, fillcolor=(255, 128, 0), expand=True)

Cuscino ruota 45 colore di riempimento espandi