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