Convertir des images en images 8 bits à l’aide de Python

Les images 8 bits sont un moyen de stocker des données d’image dans lesquelles chaque pixel transporte 8 bits d’informations ou vous pouvez également dire que chaque pixel transporte 1 octet de données. Par conséquent, le nombre maximum de couleurs qu’il peut contenir est de 256 ou 2 ^ 8. Vous avez peut-être joué à Nintendo dans votre enfance, il s’agissait de jeux vidéo 8 bits et ils ne peuvent afficher que 256 couleurs différentes. Vous pouvez également convertir des images en images 8 bits à l’aide de Python, ça sonne bien, non ?

Actuellement, la plupart des infographies fonctionnent sur 64 bits, ce qui signifie qu’elles peuvent afficher 2 ^ 64 couleurs différentes. Mais vous pouvez profiter de la couleur 8 bits via des postes de travail distants. Pour conserver la bande passante, de nombreux postes de travail distants passent en 8 bits pour une expérience plus rapide et plus fluide.

8 bits peuvent sembler obsolètes pour le moment, mais ils sont toujours utilisés. Par exemple, dans les montres intelligentes avec des affichages ambiants, il existe des scanners qui utilisent 8 bits comme norme, etc.

Donc, pour ramener votre enfance, nous avons créé ce tutoriel qui peut convertir des images en images 8 bits à l’aide de Python.

Qu’allez-vous apprendre dans ce tutoriel ?

  • En savoir plus sur les différentes bibliothèques que vous pouvez utiliser pour couvrir les images en 8 bits
  • Comment convertir des images en images 8 bits à l’aide de Python.

Modules Python pour les images 8 bits

Il existe de nombreux modules Python disponibles pour la manipulation d’images, mais comme nous nous concentrons uniquement sur la conversion d’images 8 bits, nous nous concentrerons uniquement sur quelques-uns d’entre eux.

OpenCV

Il s’agit d’un module Python open source destiné à la vision par ordinateur en temps réel. Le module est multiplateforme, ce qui signifie qu’il prend en charge Java, Python, C++, etc. C’est l’un des modules les plus populaires de Python qui est utilisé pour implémenter la détection de mouvement, la manipulation vidéo, la reconnaissance d’image et même la reconnaissance faciale d’apprentissage en profondeur.

Certaines des applications d’OpenCV :

  • Boîtes à outils d’entités 2D et 3D.
  • Systèmes de reconnaissance faciale.
  • Reconnaissance gestuelle.
  • Reconnaissance de mouvement.
  • Détection d’objet.
  • Segmentation et reconnaissance.
  • Suivi de mouvement

Pixéliser

Il s’agit d’un autre package de manipulation d’images pour Python qui peut être utilisé pour pixelliser ou convertir des images normales en images 8 bits. Le module est très pratique et est livré avec de nombreuses autres fonctionnalités comme le redimensionnement d’image, la mise en niveaux de gris, etc.

Super Pyxelate

C’est mon préféré. Super Pyxelate est la version améliorée et plus rapide du module Pyxelate original. Le module partage de nombreux composants avec l’algorithme Pyxelate et crée des images 8 bits. Le module vous permet également de mettre à l’échelle des images, de modifier les dimensions, la profondeur et l’échelle de gris de l’image.

Méthode -1 : convertir en images 8 bits à l’aide de Super Pyxelate

Ouvrez maintenant votre terminal et collez le code ci-dessous pour installer le module :

pip3 install git+https://github.com/sedthh/pyxelate.git --upgrade 

Cela installera le package requis, c’est-à-dire Super Pyxelate. Une fois installé, ouvrez maintenant votre éditeur préféré, créez un nouveau fichier « 8bit_pyx.py » et collez le code ci-dessous :

from skimage import io
from pyxelate import Pyx, Pal

#load image with 'skimage.io.imread()'

image = io.imread("IMAGE_NAME.png")  
downsample_by = 14  # new image will be 1/14th of the original in size
palette = 7  # find 7 colors

#1) Instantiate Pyx transformer

pyx = Pyx(factor=downsample_by, palette=palette)

#2) fit an image, allow Pyxelate to learn the color palette

pyx.fit(image)

#3) transform image to pixel art using the learned color palette

new_image = pyx.transform(image)
save new image with 'skimage.io.imsave()'
io.imsave("pixel.png", new_image)

Explication des codes :

Nous importons nos modules requis, puis nous lisons notre image et la stockons dans une variable appelée image.

Après cela, nous avons défini la taille de la palette à 7 et downsample_by 14. Cela signifie que l’image convertie sera 1/14 de la taille d’origine. Ensuite, nous instancions le transformateur Pyx.

  • pyx.fit(image): essaie essentiellement d'adapter l'image à la palette de couleurs donnée.
  • new_image = pyx.transform(image): transforme l'image en pixel art en utilisant la palette de couleurs apprise et la stocke dans une variable "new_image".
  • io.imsave("pixel.png", new_image) : maintenant l'image est stockée dans un fichier nommé "pixel.png".

Exécution de code :

Maintenant, pour exécuter le code, je passe une image appelée « test.png ». Exécutez la commande ci-dessous pour exécuter le code :

python3 8bit_pyx.py

Image d’entrée :

convert-to-8-bit-images-using-python

Sortir:

convert-to-8-bit-images-using-python

Méthode -2 : convertir en images 8 bits à l’aide de Pixelate

Dans cette méthode, nous allons utiliser un autre package appelé Pixelate. Donc, dans votre terminal, collez le code ci-dessous pour installer le module de dépendance :

pip3 install pixelate

Une fois installé avec succès, vous pouvez créer un nouveau fichier appelé « pix.py » et coller le code ci-dessous :

from PIL import Image

def pixelate(input_file_path, pixel_size):
    image = Image.open(input_file_path)
    image = image.resize(
        (image.size[0] // pixel_size, image.size[1] // pixel_size),
        Image.NEAREST
    )
    image = image.resize(
        (image.size[0] * pixel_size, image.size[1] * pixel_size),
        Image.NEAREST
    )

    image.save("pixelate.jpg")

pixelate("test.jpg",8)

Explication des codes :

Nous avons défini une fonction pixelate() qui accepte deux paramètres : input_file_path et pixel_size. À l’intérieur de la fonction, vous pouvez voir que nous lisons l’image et la stockons dans une variable appelée « image ».

Après cela, nous redimensionnons l’image et effectuons les calculs pour la convertir en une image 8 bits.

Enfin, image.save(« pixelate.jpg ») enregistre l’image.

Exécution de code :

Pour exécuter le code, utilisez :

python3 pix.py

Input:

convert-to-8-bit-images-using-python

Sortir:

convert-to-8-bit-images-using-python

Méthode -3 : convertir en images 8 bits à l’aide d’OpenCV

Maintenant, nous devons d’abord installer OpenCV qui est notre principal acteur pour la manipulation d’images. Donc, dans votre terminal, collez le code ci-dessous :

pip3 install opencv-python

Une fois installé, créez un nouveau fichier « openc.py » et collez le code ci-dessous :

import cv2

#Input image

input = cv2.imread('test.jpg')
 
#Get input size
 
height, width = input.shape[:2]

#Desired "pixelated" size
 
w, h = (256, 256)
 
#Resize input to "pixelated" size
 
temp = cv2.resize(input, (w, h), interpolation=cv2.INTER_LINEAR)

#Initialize output image
 
output = cv2.resize(temp, (width, height), interpolation=cv2.INTER_NEAREST)
cv2.imwrite("pixelate.jpg", output)

Explication des codes :

Nous lisons d’abord l’image et la stockons dans une variable « input ».

Après cela, nous récupérons la hauteur et la largeur de l’image. Nous avons également défini la taille de l’image traitée, pour l’instant, c’est 256×256.

L’image est maintenant redimensionnée à l’aide de cv2.resize(input, (w, h), interpolation=cv2.INTER_LINEAR).

A la fin, nous enregistrons l’image sous le nom « pixelate.jpg »

Exécution de code :

Pour exécuter le code, collez le code ci-dessous dans votre terminal :

python3 openc.py

Input:

Sortir:

Derniers mots

Ainsi, dans cet article, nous avons couvert trois méthodes pour convertir n’importe quelle image en pixel art 8 bits. Il existe également d’autres méthodes et modules qui peuvent être utilisés pour convertir des images 8 bits à l’aide de Python.

Voici quelques tutoriels utiles que vous pouvez lire :

Spread the love
 
   

Laisser un commentaire