Sha256: e26237de8dd753541d02a5f3685b2b05788286a94d31dc0363ea20b6b4d2a9ac
Contents?: true
Size: 1.26 KB
Versions: 1
Compression:
Stored size: 1.26 KB
Contents
require 'findaface/version' require 'posix/spawn' module Findaface LIB_PATH = File.dirname(File.expand_path(__FILE__)) EXECUTABLE = File.join(LIB_PATH, '../ext/findaface/findaface') DEFAULT_CASCADE = { cascade:'haarcascades/haarcascade_frontalface_alt2.xml', fussyness:4, min_size: 80, scale_factor: 1.05, } DEFAULT_OPTIONS = DEFAULT_CASCADE.keys class << self attr_reader :cascades end def self.has_face?(path) raise "#{path} file does not exist" unless File.exists?(path) add_cascade(DEFAULT_CASCADE) if @cascades.nil? commands = @cascades.map { |opts| build_command(opts, path) } commands.each { |cmd| return true if POSIX::Spawn::system cmd } false end def self.add_cascade(options) raise "Invalid setting. Got #{options.keys.sort}, require #{DEFAULT_OPTIONS}" unless options.keys.sort == DEFAULT_OPTIONS @cascades ||= [] @cascades << options end private def self.build_command(options, path) "#{EXECUTABLE} " + "--cascade=#{cascade_path(options[:cascade])} " + "--fussyness=#{options[:fussyness]} " + "--scale_factor=#{options[:scale_factor]} " + "--min_size=#{options[:min_size]} " + "#{path} > /dev/null 2>&1" end def self.cascade_path(cascade_path) File.join(LIB_PATH, cascade_path) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
findaface-0.0.5 | lib/findaface.rb |