Interactive Ruby session

Here is an example session with interactive Ruby (irb).  It shows how HornetsEye can be used interactively.

See also

interactive.rb(main):001:0> require 'hornetseye'
=> true
interactive.rb(main):002:0> include Hornetseye
=> Object
interactive.rb(main):003:0> img = MultiArray.load_rgb24( "../data/images/fubk.png" ) # read an image
=> MultiArray.ubytergb(384,288):
[ [ RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), ... ],
  [ RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), ... ],
  [ RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), ... ],
  [ RGB( 255, 255, 255 ), RGB( 255, 255, 255 ), ... ],
  [ RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), ... ],
  [ RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), ... ],
  [ RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), ... ],
  [ RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), ... ],
  [ RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), ... ],
  [ RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), RGB( 77, 77, 77 ), ... ],
...
interactive.rb(main):004:0> region = img[ 71...312, 43...244 ] # copy a region from this image
=> MultiArray.ubytergb(241,201):
[ [ RGB( 255, 255, 255 ), RGB( 255, 255, 255 ), ... ],
  [ RGB( 255, 255, 255 ), RGB( 192, 192, 192 ), ... ],
  [ RGB( 255, 255, 255 ), RGB( 192, 192, 192 ), ... ],
  [ RGB( 255, 255, 255 ), RGB( 192, 192, 192 ), ... ],
  [ RGB( 255, 255, 255 ), RGB( 192, 192, 192 ), ... ],
  [ RGB( 255, 255, 255 ), RGB( 192, 192, 192 ), ... ],
  [ RGB( 255, 255, 255 ), RGB( 192, 192, 192 ), ... ],
  [ RGB( 255, 255, 255 ), RGB( 192, 192, 192 ), ... ],
  [ RGB( 255, 255, 255 ), RGB( 192, 192, 192 ), ... ],
  [ RGB( 255, 255, 255 ), RGB( 192, 192, 192 ), ... ],
...
interactive.rb(main):005:0> region.g = 255 - region.g
=> MultiArray.ubyte(241,201):
[ [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... ],
  [ 0, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, ... ],
  [ 0, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, ... ],
  [ 0, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, ... ],
  [ 0, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, ... ],
  [ 0, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, ... ],
  [ 0, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, ... ],
  [ 0, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, ... ],
  [ 0, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, ... ],
  [ 0, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, ... ],
...
interactive.rb(main):006:0> region.r, region.b = region.b, region.r
=> [MultiArray.ubyte(241,201):
[ [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, ... ],
  [ 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, ... ],
  [ 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, ... ],
  [ 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, ... ],
  [ 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, ... ],
  [ 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, ... ],
  [ 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, ... ],
  [ 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, ... ],
  [ 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, ... ],
  [ 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, ... ],
..., MultiArray.ubyte(241,201):
[ [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, ... ],
  [ 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, ... ],
  [ 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, ... ],
  [ 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, ... ],
  [ 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, ... ],
  [ 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, ... ],
  [ 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, ... ],
  [ 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, ... ],
  [ 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, ... ],
  [ 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, ... ],
...]
interactive.rb(main):007:0> result = MultiArray.ubytergb( region.shape[0] + 10, region.shape[1] + 10 )
=> MultiArray.ubytergb(251,211):
[ [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
...
interactive.rb(main):008:0> result.fill!( RGB( 0, 0, 0 ) )
=> MultiArray.ubytergb(251,211):
[ [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
...
interactive.rb(main):009:0> result[ 5...( 5 + region.shape[0] ), 5...( 5 + region.shape[1] ) ] = region
=> MultiArray.ubytergb(241,201):
[ [ RGB( 255, 0, 255 ), RGB( 255, 0, 255 ), RGB( 255, 0, 255 ), ... ],
  [ RGB( 255, 0, 255 ), RGB( 192, 63, 192 ), RGB( 192, 63, 192 ), ... ],
  [ RGB( 255, 0, 255 ), RGB( 192, 63, 192 ), RGB( 192, 63, 192 ), ... ],
  [ RGB( 255, 0, 255 ), RGB( 192, 63, 192 ), RGB( 192, 63, 192 ), ... ],
  [ RGB( 255, 0, 255 ), RGB( 192, 63, 192 ), RGB( 192, 63, 192 ), ... ],
  [ RGB( 255, 0, 255 ), RGB( 192, 63, 192 ), RGB( 192, 63, 192 ), ... ],
  [ RGB( 255, 0, 255 ), RGB( 192, 63, 192 ), RGB( 192, 63, 192 ), ... ],
  [ RGB( 255, 0, 255 ), RGB( 192, 63, 192 ), RGB( 192, 63, 192 ), ... ],
  [ RGB( 255, 0, 255 ), RGB( 192, 63, 192 ), RGB( 192, 63, 192 ), ... ],
  [ RGB( 255, 0, 255 ), RGB( 192, 63, 192 ), RGB( 192, 63, 192 ), ... ],
...
interactive.rb(main):010:0> result.save_rgb24( "interactive.png" )
=> 251x211 RGB24-image
interactive.rb(main):011:0> quit
Install Wirble for Ruby and RubyGems.
Close