class Percept::Runner
Constants
- LINE_LENGTH
Public Instance Methods
blackish?(pixel)
click to toggle source
def black?(pixel)
[pixel.red, pixel.green, pixel.blue].all? { |color| color == 0 }
end
# File lib/percept/runner.rb, line 17 def blackish?(pixel) [pixel.red, pixel.green, pixel.blue].all? { |color| color <= tolerance } end
each_row(image) { |row, row_number| ... }
click to toggle source
# File lib/percept/runner.rb, line 64 def each_row(image) column_count = image.columns row_count = image.rows row_count.times do |row_number| row = image.get_pixels(0, row_number, column_count, 1) yield(row, row_number) end end
find_lines(row, row_number)
click to toggle source
# File lib/percept/runner.rb, line 47 def find_lines(row, row_number) start_index = nil lines = [] row.each_with_index do |pixel, index| if blackish?(pixel) start_index ||= index elsif start_index if index - start_index > LINE_LENGTH lines << Line.new(:start_x => start_index, :end_x => index, :row => row, :start_y => row_number) end start_index = nil end end lines end
highlight_lines!(row)
click to toggle source
# File lib/percept/runner.rb, line 22 def highlight_lines!(row) black = false start_index = nil line_indices = [] row.each_with_index do |pixel, index| if blackish?(pixel) && start_index # continue elsif blackish?(pixel) && !start_index start_index = index elsif start_index if index - start_index > LINE_LENGTH line_indices += (start_index...index).to_a end start_index = nil end end line_indices.each do |index| pixel = row[index] pixel.red = scaled_color(256) end row end
run()
click to toggle source
# File lib/percept/runner.rb, line 73 def run images = Magick::ImageList.new('./permission.png') image = images.first #new_image = Magick::Image.new rows = image.rows columns = image.columns lines = [] output_pixels = [] each_row(image) do |row, index| output_pixels += row if index % 50 == 0 puts "working on row: #{index} of #{rows}" end lines += find_lines(row, index) #out_pixels += highlight_lines!(row) #row.each do |pixel| # pixel.red = scaled_color(256) if blackish?(pixel) # out_pixels << pixel #end end line_count = lines.count lines.each_with_index do |line, index| puts "coloring line #{index} of #{line_count}" line.pixels.each do |pixel| pixel.red = scaled_color(256) end end #image.each_pixel do |pixel, column, row| # pixel.red = 60000 if blackish?(pixel) # out_pixels << pixel #end image = image.store_pixels(0, 0, columns, rows, output_pixels) image.write('new_permission.png') end
scaled_color(value)
click to toggle source
# File lib/percept/runner.rb, line 4 def scaled_color(value) (value * 256) - 1 end
tolerance()
click to toggle source
# File lib/percept/runner.rb, line 10 def tolerance scaled_color(150) end