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_ubytergb '../data/images/fubk.png'
=> 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> x = img.sobel 0
=> MultiArray.sintrgb(384,288):
[ [ RGB( -231, -231, -231 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( -308, -308, -308 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( -486, -486, -486 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( -664, -664, -664 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( -486, -486, -486 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( -308, -308, -308 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( -308, -308, -308 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( -308, -308, -308 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( -308, -308, -308 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( -308, -308, -308 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  ...
interactive.rb(main):005:0> y = img.sobel 1
=> MultiArray.sintrgb(384,288):
[ [ RGB( -231, -231, -231 ), RGB( -308, -308, -308 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( -534, -534, -534 ), RGB( -712, -712, -712 ), ... ],
  [ RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 534, 534, 534 ), RGB( 712, 712, 712 ), ... ],
  [ 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):006:0> sqr = x ** 2 + y ** 2
=> MultiArray.intrgb(384,288):
[ [ RGB( 106722, 106722, 106722 ), RGB( 94864, 94864, 94864 ), ... ],
  [ RGB( 94864, 94864, 94864 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 521352, 521352, 521352 ), RGB( 506944, 506944, 506944 ), ... ],
  [ RGB( 440896, 440896, 440896 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 521352, 521352, 521352 ), RGB( 506944, 506944, 506944 ), ... ],
  [ RGB( 94864, 94864, 94864 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 94864, 94864, 94864 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 94864, 94864, 94864 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 94864, 94864, 94864 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 94864, 94864, 94864 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  ...
interactive.rb(main):007:0> result = MultiArray.intrgb( 384, 288 ).fill!
=> MultiArray.intrgb(384,288):
[ [ 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.r =  Math.sqrt sqr.r
=> MultiArray.dfloat(384,288):
[ [ 326.683332908185, 308.0, 308.0, 308.0, 308.0, 308.0, 308.0, ... ],
  [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ],
  [ 722.047089877108, 712.0, 712.0, 712.0, 712.0, 712.0, 712.0, ... ],
  [ 664.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 356.0, ... ],
  [ 722.047089877108, 712.0, 712.0, 712.0, 712.0, 712.0, 712.0, ... ],
  [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ],
  [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ],
  [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ],
  [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ],
  [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ],
  ...
interactive.rb(main):009:0> result.g =  Math.sqrt sqr.g
=> MultiArray.dfloat(384,288):
[ [ 326.683332908185, 308.0, 308.0, 308.0, 308.0, 308.0, 308.0, ... ],
  [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ],
  [ 722.047089877108, 712.0, 712.0, 712.0, 712.0, 712.0, 712.0, ... ],
  [ 664.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 356.0, ... ],
  [ 722.047089877108, 712.0, 712.0, 712.0, 712.0, 712.0, 712.0, ... ],
  [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ],
  [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ],
  [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ],
  [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ],
  [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ],
  ...
interactive.rb(main):010:0> result.b =  Math.sqrt sqr.b
=> MultiArray.dfloat(384,288):
[ [ 326.683332908185, 308.0, 308.0, 308.0, 308.0, 308.0, 308.0, ... ],
  [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ],
  [ 722.047089877108, 712.0, 712.0, 712.0, 712.0, 712.0, 712.0, ... ],
  [ 664.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 356.0, ... ],
  [ 722.047089877108, 712.0, 712.0, 712.0, 712.0, 712.0, 712.0, ... ],
  [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ],
  [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ],
  [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ],
  [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ],
  [ 308.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 712.0, ... ],
  ...
interactive.rb(main):011:0> result.normalise.save_ubytergb 'interactive.png'
=> MultiArray.ubytergb(384,288):
[ [ RGB( 72, 72, 72 ), RGB( 68, 68, 68 ), RGB( 68, 68, 68 ), ... ],
  [ RGB( 68, 68, 68 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 161, 161, 161 ), RGB( 159, 159, 159 ), ... ],
  [ RGB( 148, 148, 148 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 161, 161, 161 ), RGB( 159, 159, 159 ), ... ],
  [ RGB( 68, 68, 68 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 68, 68, 68 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 68, 68, 68 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 68, 68, 68 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  [ RGB( 68, 68, 68 ), RGB( 0, 0, 0 ), RGB( 0, 0, 0 ), ... ],
  ...
interactive.rb(main):012:0> quit
Install Wirble for Ruby and RubyGems.
Close