Elaborazione delle immagini senza OpenCV | python

| | | | | | | | | |

Sappiamo che OpenCV è ampiamente utilizzato per lavorare con le immagini e ha un`ampia gamma di funzioni per questo. Ma cosa succede se vogliamo elaborare i file di immagine senza utilizzare alcuna libreria esterna come OpenCV. Vediamo come possiamo farlo.

Ridimensionamento dell`immagine (usando l`interpolazione del vicino più vicino):

Interpolazione del vicino più vicino — questo è il modo più semplice per interpolare. Questo metodo determina semplicemente il pixel adiacente "più vicino" e prende un valore per la sua intensità.

Considera una piccola immagine la cui larghezza è w e l`altezza è — h che vogliamo cambiare da larghezza p a larghezza q, assumendo p > m e q > n. Ora abbiamo bisogno di due costanti di ridimensionamento:

scale_x = p / w scale_y = q / h 

Ora ripetiamo semplicemente su tutti i pixel nell`immagine di output, facendo riferimento ai pixel originali che abbiamo stanno copiando da. ridimensionando le nostre variabili di controllo con scale_x e scale_y e arrotondando i valori dell`indice in scala risultanti.

Rappresentazione visiva:
L`immagine è 3X3 pixel (9 pixel in totale), ora se vogliamo aumentare la dimensione dell`immagine a 6X6, allora secondo l`algoritmo più vicino 6/3 (cioè 2) pixel dovrebbero avere lo stesso valore RGB del valore pixel all`immagine originale.

Programma di ridimensionamento delle immagini:


< /tbody>

# using matplotlib e numpy

import matplotlib.image as img

importa numpy as npy


# fornisce la posizione dell`immagine leggibile

m = img.imread ( "taj.png " );


# definizione della lunghezza dell`immagine originale

w , h = m.shape [: 2 < codice classe = "semplice">];


# xNew e yNew sono la nuova larghezza e
# altezza dell`immagine richiesta
dopo il ridimensionamento

xNuovo = int (w * 1 / 2 );

yNew = int (h * 1 / 2 );


# calcola il fattore di scala
# lavora più di 2 pixel

xScale = xNew / (w - 1 );

yScale = yNew / (h - 1 < /codice> );


# usando numpy, prendendo la matrice xNew
# larghezza e nuova altezza con
# 4 attributi [alpha, B, G, B] valori ‚Äã‚Äã

newImage = npy.zeros ([xNew, yNew, 4 ]);


for i in range (xNew - 1 ):

for j in range (yNew - 1 ):

newImage [ i + 1 , j + 1 ] = m [ 1 + int (i / xScale),

1 + int (j / yScale)]


# Salva l`immagine dopo il ridimensionamento

img.imsave ( `scaled.png ` , newImage);

Risultato:

Scala di grigi dell`immagine:

Utilizzando la media value, questo metodo enfatizza l`intensità di un pixel, invece di mostrare di quali valori RGB è composto. Quando calcoliamo il valore RGB medio e gli assegniamo il valore RGB per un pixel, poiché il valore RGB del pixel è lo stesso, non sarà in grado di creare alcun colore, poiché tutti i colori sono generati a causa di un diverso rapporto di RGB valori, poiché in questo caso il rapporto sarebbe 1: 1: 1. Pertanto, l`immagine renderizzata apparirà come un`immagine grigia.

Rappresentazione visiva:

Programma di immagini in scala di grigi:


# using NumPy

import numpy as npy


# using matplotlib

import matplotlib.image as img


# usa le statistiche per importare la media
# per calcolare la media

da statistiche import mean


m = img.imread ( "taj.png" )


# definisce la larghezza e l`altezza del immagine originale

w, h = m .shape [: 2 ]


# nuova dimensione dell`immagine con 4 attributi per pixel

newImage = npy.zeros ([w, h, 4 ])

print (w)

print (h)


for i in intervallo (w):

< classe codice = "parola chiave"> for j in intervallo (h):

# Il rapporto RGB sarà compreso tra 0 e 1

lst = [ float (m [i] [j] [ 0 ]), float (m [i] [j] [ 1 ]), float (m [i] [j] [ 2 ])]

avg = float ( mean (lst) )

newImage [i] [j] [ 0 ] = avg

newImage [i] [j] [ 1 ] = avg

newImage [i] [j] [ 2 ] = avg

newImage [i] [j] [ 3 ] = 1 # il valore alfa deve essere 1


# Salva l`immagine con imsave

img.imsave ( `grayedImage.png` , newImage)

Risultato:

Ritagliare un`immagine:

Il ritaglio sostanzialmente rimuove pixel indesiderati.Questo può essere fatto inserendo il pixel richiesto in un`altra griglia di immagini, la cui dimensione corrisponda a quella richiesta dopo il ritaglio.

Considera un`immagine con una dimensione di 10 √ó 10 pixel, e se vogliamo solo ritagliare il centro di un`immagine con una dimensione di 4 √ó 4 pixel, quindi dobbiamo raccogliere i valori dei pixel ‚Äã‚Äãda (10-4) / 2, a partire da (3, 3) fino a 4 pixel nella direzione x e 4 pixel nella direzione y.

Rappresentazione visiva:

Ritaglia immagine:


# using matplotlib e numpy

import matplotlib.image as img

import numpy as npy


# leggi l`immagine nella variabile m

m = img.imread ( "taj.png" )


# definizione della dimensione dell`immagine larghezza (w) altezza (h)

w, h = m.shape [: 2 ]


# dimensione dell`immagine richiesta dopo il ritaglio

xNew = int (w * 1 / 4 )

yNew = int (h * 1 / 4 )

newImage = npy.zeros ([xNew, yNew, 4 ])


# larghezza di stampa altezza dell`immagine di origine

print (w)

print (h)


for i in intervallo ( 1 , xNew):

for j in range ( 1 , yNew):

# ritaglia da 100 a 100 pixel dell`immagine originale

newImage [i, j] = m [ 100 + i, 100 + j]


# salva l`immagine

img.imsave ( `cropped.png` , newImage)

Output:

Elaborazione delle immagini senza OpenCV | python __del__: Questions

Elaborazione delle immagini senza OpenCV | python _files: Questions

Shop

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Best laptop for Zoom

$499

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News

Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method