Skip to content

how to read individual values from a pixmap object

5 messages · Tony Gill, Roger Bivand, Friedrich Leisch +1 more

#
On Thu, 4 Aug 2005, Tony Gill wrote:

            
There are lots of ideas in the S4 Classes and Methods useR! 04 keynote
talk given by pixmap maintainer Friedrich Leisch at:  

http://www.ci.tuwien.ac.at/Conferences/useR-2004/Keynotes/Leisch.pdf

but the easiest one is:
Pixmap image
  Type          : pixmapGrey 
  Size          : 1x1 
  Resolution    : 1x1 
  Bounding box  : 0 0 1 1
[,1]
[1,]    1

unless you use a hammer and chisel:
Formal class 'pixmapGrey' [package "pixmap"] with 6 slots
  ..@ grey    : num [1, 1] 1
  ..@ channels: chr "grey"
  ..@ size    : int [1:2] 1 1
  ..@ cellres : num [1:2] 1 1
  ..@ bbox    : num [1:4] 0 0 1 1
  ..@ bbcent  : logi FALSE
[,1]
[1,]    1

  
    
#
[...]

  > Now I would like to read individual pixel values and store them in a
  > separate vector. However I have not found a straight-forward way to do this.
 
  > I thought that something like:
 
  > x <- xGrey[1,1]
 
  > would return the pixel value, but it seems to return a pixmap object with
  > dimension 1x1 (i.e. only one pixel in size)
 
  > xGrey[1,1]
  > Pixmap image
  >   Type          : pixmapGrey 
  >   Size          : 1x1 
  >   Resolution    : 1x1 
  >   Bounding box  : 1 0 2 1
 
  > Any ideas on how to get the actual pixel value from a pixmap? (Note I could
  > output to an ascii file and then read the file back in as text - but not
  > nice!)


getChannels(xGrey) will get you the matrix of pixel values.

HTH,
#
Tony Gill <t.gill1 <at> uq.edu.au> writes:
library(pixmap)
x <- read.pnm("graypic.pnm")
str(x)
x at grey[1,1]
#
Ben Bolker <bolker <at> ufl.edu> writes:
just in case there's any confusion ... that <at> should
be an at-symbol!