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

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