Module: OpenCVColor

Includes:
OpenCV
Defined in:
lib/opencv-color.rb,
lib/opencv-color/version.rb

Defined Under Namespace

Classes: Colors

Constant Summary collapse

VERSION =
"1.0.0"

Class Method Summary collapse

Class Method Details

.learn(dir) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/opencv-color.rb', line 35

def learn(dir)
  Hash[samples(dir).map do |color, files|
    group = [[], [], [], []]
    files.map(&method(:load_image_colors)).each do |colors|
      colors.each do |c|
        4.times do |i|
          group[i] << c[i]
        end
      end
    end
    range = group.map(&:to_scale).inject({low: [], high: []}) do |memo, g|
      sd = g.sd
      mean = g.mean
      memo[:low] << ([mean - 3 * sd, 0].max).floor
      memo[:high] << (mean + 3 * sd).ceil
      memo
    end
    [File.basename(color).downcase.gsub(/[^a-z_]/, '_'), range]
  end]
end

.load_image_colors(file) ⇒ Object



56
57
58
# File 'lib/opencv-color.rb', line 56

def load_image_colors(file)
  Colors.new(IplImage.load(file, OpenCV::CV_LOAD_IMAGE_ANYCOLOR | OpenCV::CV_LOAD_IMAGE_ANYDEPTH).BGR2HSV)
end

.samples(dir) ⇒ Object



29
30
31
32
33
# File 'lib/opencv-color.rb', line 29

def samples(dir)
  Dir["#{dir}/*"].map do |color|
    [color, Dir["#{color}/*"]]
  end
end