Traitement d`image sans OpenCV | python

| | | | | | | | | |

Nous savons qu`OpenCV est largement utilisé pour travailler avec des images et dispose d`un large éventail de fonctions pour cela. Mais que se passe-t-il si nous voulons traiter des fichiers image sans utiliser de bibliothèque externe comme OpenCV. Voyons comment nous pouvons faire cela.

Mise à l`échelle de l`image (en utilisant l`interpolation du voisin le plus proche) :

Interpolation du voisin le plus proche — ; c`est le moyen le plus simple d`interpoler. Cette méthode détermine simplement le pixel voisin "le plus proche" et prend une valeur pour son intensité.

Considérez une petite image dont la largeur est w et la hauteur est — h que nous voulons changer de la largeur p à la largeur q, en supposant p > m et q > n.m. Maintenant, nous avons besoin de deux constantes de mise à l`échelle :

scale_x = p / w scale_y = q / h 

Maintenant, nous parcourons simplement tous les pixels de l`image de sortie, en nous référant aux pixels d`origine que nous avons copiez à partir de. mettre à l`échelle nos variables de contrôle avec scale_x et scale_y, et arrondir les valeurs d`index mises à l`échelle résultantes.

Représentation visuelle :
L`image fait 3X3 pixels (9 pixels au total), maintenant si nous voulons augmenter la taille de l`image à 6X6, alors selon l`algorithme le plus proche voisin 6/3 (soit 2) pixels devraient avoir la même valeur RVB que la valeur pixel à l`image d`origine.

Programme de redimensionnement d`image :


< /tbody>

# en utilisant matplotlib et numpy

import matplotlib.image as img

importer numpy as npy


# fournir un emplacement d`image lisible

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


# définissant la longueur de l`image d`origine

w , h = m.shape [: 2 < classe de code = "plain">] ;


# xNew et yNew sont la nouvelle largeur et
# hauteur d`image requise
après mise à l`échelle

xNew = int (w * 1 / 2 );

yNouveau = int (h * 1 / 2 );


# calculer le facteur d`échelle
# travailler plus de 2 pixels

xScale = xNew / (w - 1 );

yScale = yNew / (h - 1 );


# en utilisant numpy, en prenant la matrice xNew
# largeur et nouvelle hauteur avec
# 4 attributs [alpha, B, G, B] valeurs ‚Äã‚Äã

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


pour i dans plage (xNouveau - 1 ) :

pour j dans range (yNew - 1 ) :

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

1 + int (j / yScale)]


# Enregistrer l`image après mise à l`échelle

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

Sortie :

Échelle de gris de l`image :

En utilisant la moyenne méthode de valeur, cette méthode met l`accent sur l`intensité d`un pixel, plutôt que de montrer de quelles valeurs RVB il est composé. Lorsque nous calculons la valeur RVB moyenne et lui attribuons la valeur RVB pour un pixel, puisque la valeur RVB du pixel est la même, il ne pourra créer aucune couleur, car toutes les couleurs sont générées en raison d`un rapport différent de RVB valeurs, puisque dans ce cas le rapport serait de 1 : 1 : 1. Par conséquent, l`image rendue ressemblera à une image grise.

Représentation visuelle :

Programme d`image en niveaux de gris :


# en utilisant NumPy

importer numpy comme npy


# en utilisant matplotlib

import matplotlib.image as img


# utilise les statistiques pour importer la moyenne
# pour calculer la moyenne

de statistiques importer signifier


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


# définir la largeur et la hauteur du image d`origine

w, h = m .shape [: 2 ]


# nouvelle dimension d`image avec 4 attributs par pixel

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

imprimer (w)

imprimer (h)


pour je dans plage (w) :

pour j dans plage (h) :

# le ratio RVB sera compris entre 0 et 1

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

avg = float (moyen (lst) )

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

nouvelleImage [i] [j] [ 1 ] = avg

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

newImage [i] [j] [ 3 ] = 1 # la valeur alpha doit être 1


# Enregistrer l`image avec imsave

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

Sortie :

Recadrer une image :

Le recadrage supprime essentiellement pixel indésirable. Cela peut être fait en plaçant le pixel requis dans une autre grille d`images, dont la taille correspond à celle requise après le recadrage.

Considérez une image d`une taille de 10 √ó 10 pixels, et si nous voulons seulement recadrer le centre d`une image avec une taille de 4 √ó 4 pixels, alors nous devons collecter des valeurs de pixel ‚Äã‚Äãde (10-4) / 2, à partir de (3, 3) jusqu`à 4 pixels dans la direction x et 4 pixels dans la direction y.

Représentation visuelle :

Recadrage d`image :


# utiliser matplotlib et numpy

importer matplotlib.image comme img

import numpy as npy


# lire l`image dans la variable m

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


# définition de la taille de l`image largeur (l) hauteur (h)

l, h = m.forme [: 2 ]


# taille d`image requise après recadrage

xNew = int (w * 1 / 4 )

yNouveau = int (h * 1 / 4 )

newImage = npy.zeros ([xNouveau, yNouveau, 4 ])


# largeur d`impression hauteur de l`image source

print (w)

print (h)


pour i dans plage ( 1 , xNew) :

for j in range ( 1 , yNew) :

# recadrer de 100 à 100 pixels de l`image d`origine

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


# enregistrer l`image

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

Sortie :

Shop

Learn programming in R: courses

$

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

$

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


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