Ridimensionamento delle immagini utilizzando OpenCV | Pitone

Ridimensionamento delle immagini utilizzando OpenCV | Pitone

Il ridimensionamento delle immagini si riferisce al ridimensionamento delle immagini. Il ridimensionamento è utile in molte applicazioni di elaborazione delle immagini e di apprendimento automatico. Aiuta a ridurre il numero di pixel di un'immagine e presenta numerosi vantaggi, ad es. Può ridurre il tempo di addestramento di una rete neurale poiché maggiore è il numero di pixel in un'immagine maggiore è il numero di nodi di input che a sua volta aumenta la complessità del modello.
Aiuta anche a ingrandire le immagini. Molte volte è necessario ridimensionare l'immagine, ovvero ridurla o ingrandirla per soddisfare i requisiti di dimensione. OpenCV ci fornisce diversi metodi di interpolazione per ridimensionare un'immagine.

Scelta del metodo di interpolazione per il ridimensionamento:

  • cv2.INTER_AREA: viene utilizzato quando dobbiamo ridurre un'immagine.
  • cv2.INTER_CUBIC: è lento ma più efficiente.
  • cv2.INTER_LINEAR: viene utilizzato principalmente quando è richiesto lo zoom. Questa è la tecnica di interpolazione predefinita in OpenCV.

Sintassi: cv2.resize(sorgente, dsize, dest, fx, fy, interpolazione)

parametri:

    source: array di immagini di input (canale singolo, 8 bit o virgola mobile) dsize: dimensione dell'array di output dest: array di output (simile alle dimensioni e al tipo dell'array di immagini di input) [opzionale] fx: fattore di scala lungo il asse orizzontale [facoltativo] fy: fattore di scala lungo l'asse verticale [facoltativo] interpolazione: uno dei metodi di interpolazione sopra indicati [facoltativo]

Di seguito è riportato il codice per il ridimensionamento:

Python3




import> cv2> import> numpy as np> import> matplotlib.pyplot as plt> image> => cv2.imread(r> 'D:simsebsim21EB-ML-06-10-2022-Test-Output-15PERFORATIONOverkillFailBlister 1 2022-03-12 12-59-43.859 T0 M0 G0 3 PERFORATION Mono.bmp'> ,> 1> )> # Loading the image> half> => cv2.resize(image, (> 0> ,> 0> ), fx> => 0.1> , fy> => 0.1> )> bigger> => cv2.resize(image, (> 1050> ,> 1610> ))> stretch_near> => cv2.resize(image, (> 780> ,> 540> ),> > interpolation> => cv2.INTER_LINEAR)> Titles> => [> 'Original'> ,> 'Half'> ,> 'Bigger'> ,> 'Interpolation Nearest'> ]> images> => [image, half, bigger, stretch_near]> count> => 4> for> i> in> range> (count):> > plt.subplot(> 2> ,> 2> , i> +> 1> )> > plt.title(Titles[i])> > plt.imshow(images[i])> plt.show()>

Produzione:

Nota: Una cosa da tenere a mente durante l'utilizzo della funzione cv2.resize() è che la tupla passata per determinare la dimensione della nuova immagine ((1050, 1610) in questo caso) segue l'ordine (larghezza, altezza) diversamente da quanto previsto ( altezza larghezza).