Convertir des images en sépia avec PIL (Python Imaging Library)

Qu'est-ce que tu veux faire

Voici un échantillon de pixels de lecture.

Lire les pixels de l'image d'origine → Traiter → Ecrire les données traitées Cela devient la procédure telle que.

Plus précisément, lire les pixels → convertir en échelle de gris → convertir en nuances sépia → écrire des pixels Ce processus est exécuté pour tous les pixels un par un.

Je sais qu'il existe un moyen plus efficace.

Résultat d'exécution

L'image originale haku12.png

Résultat d'exécution haku12sepia.png

scénario

Fonctionne sur Python 2.7. Il semble que PIL ne supporte pas encore la série Python 3.

image-sepia.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Filtre pour convertir l'image en sépia

Premier argument:Nom du fichier d'entrée
Deuxième argument:Nom du fichier de sortie (facultatif)

Le sépia est une peinture brun noir à l'encre de seiche, et rendre l'image sépia signifie lui donner l'impression d'avoir été dessinée.
-Extraire les informations de luminosité par échelle de gris
-Convertir le tout en brunâtre
'''
import sys
import Image

def grayscale(r,g,b):
    '''
Convertir les valeurs RVB en échelle de gris (noir et blanc)
    '''
    #Méthode de calcul de la moyenne pondérée NTSC
    gray = int(r * 0.298912 + g * 0.586611 + b * 0.114478)
    #Méthode simple de calcul de la moyenne
    #gray = int((r+g+b)/3)
    return gray

def sepiatone(r,g,b):
    '''
Convertir les valeurs RVB en sépia
Il ne semble y avoir aucune règle pour convertir en style sépia, donc si cela ressemble à ça, c'est OK.
    '''
    gray = grayscale(r,g,b)
    #sr = int(gray * 0.9);sg = int(gray * 0.7);sb = int(gray * 0.4)
    #sr = gray; sg = int(gray * 0.8);sb = int(gray * 0.6)
    sr = int(gray * 0.8 + 2); sg = int(gray * 0.6 + 2);sb = int(gray * 0.4 + 2)
    return sr,sg,sb

def make_image(infile, outfile):
    '''
Convertir l'image en sépia
    '''
    img = Image.open(infile)
    img = img.convert("RGB")
    x,y = img.size
    for ly in range( y):
        for lx in range( x):
            r,g,b = img.getpixel((lx, ly))
            sr,sg,sb = sepiatone(r,g,b)
            img.putpixel((lx,ly), (sr,sg,sb))
            #↓ Si vous voulez lui donner un aspect un peu fané
            #img.putpixel((lx,ly), ((r+sr)/2,(g+sg)/2,(b+sb)/2))
    img.save(outfile)
    return

def usage():
    sys.stderr.write("Usage: %s infile [outfile] \n" % sys.argv[0])
    return

if __name__ == '__main__':
    argvs = sys.argv
    argc = len(argvs)
    #Vérification des arguments
    if ((argc == 1 ) or (argc > 3)):
        usage()
        sys.exit(1)
    if (argc > 2):
        outfile = argvs[2]
    else:
        outfile = "output.png "

    infile = argvs[1]

    make_image(infile , outfile)

# EOF

Recommended Posts

Convertir des images en sépia avec PIL (Python Imaging Library)
Convertissez des PDF en images en masse avec Python
Convertir la liste en DataFrame avec python
Un exemple pour dessiner des points avec PIL (Python Imaging Library).
Mémorandum d'installation de PIL (Python Imaging Library)
Convertir une image au format PIL lue depuis un formulaire avec Django au format base64
Convertir un mémo à la fois avec Python 2to3
Convertir des données Excel en JSON avec python
Convertir Hiragana en Romaji avec Python (bêta)
Convertissez des données FX 1 minute en données 5 minutes avec Python
Ajouter du bruit gaussien aux images avec python2.7
Convertir des nombres chinois en nombres arabes avec Python
Télécharger des images sur Google Drive avec Python
Exemple de conversion en ondelettes d'images en Python
Résumé de la comparaison des bibliothèques pour générer des PDF avec Python
Convertir un PDF en image (JPEG / PNG) avec Python
Convertir un fichier svg en png / ico avec Python
Convertir les valeurs d'époque Windows à ce jour avec python
Introduction de la bibliothèque d'imagerie Python (PIL) à l'aide de HomeBrew
Convertir une chaîne au format de liste caractère par caractère avec python
Convertir 202003 en 2020-03 avec les pandas
Comment convertir / restaurer une chaîne avec [] en python
Créez un fichier image à l'aide de PIL (Python Imaging Library).
Convertissez l'image au format .zip en PDF avec Python
Comment convertir un fichier JSON en fichier CSV avec Python Pandas
Mémorandum PyInstaller Convertit Python [.py] en [.exe] avec 2 lignes
J'ai créé un programme pour convertir des images en art ASCII avec Python et OpenCV
Images en bordure avec python Partie 1
[python] Convertir la date en chaîne
Convertir numpy int64 en python int
[Python] Convertir la liste en Pandas [Pandas]
Comment convertir un tableau en dictionnaire avec Python [Application]
Connectez-vous à Wikipedia avec Python
[AWS] Essayez d'ajouter la bibliothèque Python à la couche avec SAM + Lambda (Python)
Publiez sur Slack avec Python 3
Convertir l'espace colorimétrique RVB en CIELAB avec PIL (Pillow)
Convertissez des images numérisées déformées en PDF avec Pillow et PyPDF
Convertir le projet Scratch en Python
[Python] Convertir Shift_JIS en UTF-8
Basculer python vers 2.7 avec des alternatives
Écrire en csv avec Python
Convertir l'image passée à Jason Stay Samlike en Python en ASCII Art
Enregistrer des images sur le Web sur un lecteur avec Python (Colab)
Convertir une vidéo en noir et blanc avec ffmpeg + python + opencv
Convertir le code python 3.x en python 2.x
Convertir en chaîne lors de la sortie de la sortie standard avec le sous-processus Python
Activé pour convertir PNG en JPG avec Pillow of Python
J'ai créé une bibliothèque qui lit facilement les fichiers de configuration avec Python
Convertir des fichiers écrits en python, etc. en pdf avec la coloration syntaxique
J'ai essayé de collecter automatiquement des images de Kanna Hashimoto avec Python! !!
Le moyen le plus rapide d'obtenir régulièrement des images de caméra avec opencv de python
[Python] Essayez de reconnaître les caractères des images avec OpenCV et pyocr
Reconnaissance des nombres dans les images avec Python
Convertir .ipynb en .html (avec BatchFile)
Python: comment utiliser async avec
Lien pour commencer avec python
Introduction à la bibliothèque de calcul numérique Python NumPy
[Python] Ecrire dans un fichier csv avec Python