2017-10-19 4 views
0

Je souhaite rendre une chaîne donnée en tant qu'image en niveaux de gris et effectuer par la suite quelques manipulations simples. Je suis au courant de la fonction text(). Malheureusement, cela nécessite l'ouverture d'un périphérique graphique. Pour mon but, il serait beaucoup plus pratique et efficace de stocker directement l'image en niveaux de gris dans une matrice à la place.Obtenir une image de texte en niveaux de gris rendue en tant que matrice

Qu'est-ce qu'un moyen efficace d'obtenir une représentation matricielle de l'image en niveaux de gris rendue d'une chaîne donnée?

+0

vous pouvez probablement le faire avec le paquet 'magik' - mais il utilisera un dispositif graphique –

Répondre

0

Le paquet magick tel que suggéré par Richard Telford est la clé pour résoudre la question:

# Load the package 
require(magick) 

# Create white canvas initializing magick graphical device 
img <- image_graph(width = 140, height = 40, bg = "white", pointsize = 20, 
        res = 120, clip = TRUE, antialias = TRUE) 
# Set margins to 0 
par(mar = c(0,0,0,0)) 

# Initialize plot & print text 
plot(c(0,1), axes = FALSE, main = "", xlab = "", ylab = "", col = "white") 
text(0.95, 0.42, "Test", pos = 4, family = "mono", font = 2) 

# Close the magick image device 
dev.off() 

# Convert to grayscale & extract pixelmatrix as integers 
img <- image_convert(img, colorspace = "gray") 
target <- drop(as.integer(img[[1]]))