Préparation au traitement des images pbm pixel par pixel

Au lieu de traiter vous-même la partie binaire de pbm Je pensais que ce serait facile d'écrire en utilisant la bibliothèque, mais numpy semble être bon.

C'était bon de pbm à ndarray, Je ne sais pas comment reconvertir de ndarray en pbm binaire.

Tableau NumPy et conversion PIL Add Star Bien que j'aie fait référence à ↑ etc.

Lors du retour d'un tableau d'images binaires à une image Ce n'est pas pbm car la valeur est remplacée par 1 de 8 bits au lieu de 1 bits. Je me demande si l'oreiller n'est pas bon.

array_to_pbm.py


%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image

#Ouvrir le fichier image
file_name = 'lf_img_small.pbm'
lf_img = Image.open(file_name)
#Dans le cas d'une image binaire, la valeur est stockée en type booléen.
#Dans numpy, le type booléen est numpy.Défini comme bool8.
#Lors de la lecture dans un tableau, spécifiez bool8 comme mode de lecture.
lf_img_ary = np.array(lf_img, np.bool8)

width, height = lf_img.size
print(width, height)

#Vérifions l'identité de la séquence.
print('****************')
print(img_ary.flags)
print(img_ary.ndim)
print(img_ary.size)
print(img_ary.shape)
print(img_ary.itemsize)
print(img_ary.strides)
print(img_ary.nbytes)
print(img_ary.dtype)
print('****************')
for x in range(height):
    for y in range(width):
        if y ==0 :
            print(img_ary[x,y])

#Lors de la conversion en image, c'est comme fromarray,
#S'il s'agit de bool8, une erreur se produira.
Image.fromarray(np.bool8(img_ary)).save('ary_to_pbm_file.pbm')

#Si uint8 est spécifié, pgm est créé à la place de pbm.
Image.fromarray(np.uint8(img_ary)).save('ary_to_pbm_file.pbm')

Recommended Posts

Préparation au traitement des images pbm pixel par pixel
J'ai essayé le tutoriel TensorFlow (MNIST pour les débutants) sur Cloud9-Classification des images manuscrites-
Un outil pour créer des liens symboliques sous Windows
Créer un bot pour Skype sur EC2 (CentOS)
Un mémorandum pour toucher Python Flask avec Heroku
Créer un environnement Kubernetes pour le développement sur Ubuntu