以前、画像の白黒判定をやった
白黒判定が出来るから、スキャンした画像が「プリント」か「雑誌」か判定していけば便利なんじゃないかと
ScanSnap
ScanSnap でスキャンしたときに、学校のプリントか、教科書やカラー資料か判定して仕分けたい。
http://amazon.jp/dp/B00T2B5L52/?tag=takuya-hateblo-22
- 出版社/メーカー: 富士通
- 発売日: 2015/02/06
- メディア: Personal Computers
- この商品を含むブログ (8件) を見る
zip にしておけば、簡単に判別できそう
機械学習とか使わなくてもプリント程度なら、ぱぱっと判定できた。
これでzipコミックスを仕分けできそうで便利。
ScanSnapで白黒を自動調整しておけば確実にモノクロと判別できて楽だった。
#!/usr/bin/env ruby # # dirname = Dir.pwd require 'tmpdir' require 'pry' require "tmpdir" def check( f_name ) # binding.pry # Dir.chdir dirname is_color_comic = false Dir.mktmpdir("check-color-", '/tmp') do |dir| cmd = %%unar -o "#{dir}" "#{f_name}" % # puts cmd `#{cmd}` list = Dir.glob("#{dir}/**/*") # puts list list = list.grep(/jpe?g|png|gif|png/).sort unless list.size > 10 then return false end mid = ((list.size.to_f-1)*0.666).floor names = list.slice( (mid-2)..(mid+2) ) puts names color_page = names.map{|e| cmd = <<-"EOS".gsub(/\s+/, ' ').gsub(/^\s+/,'') convert '#{e}' \ -colorspace HSB \ -separate -delete 0 \ -fx "u*v" -blur 2x2 \ -threshold 30% \ -format '%[fx:mean]\n' info: EOS # p cmd ret = `#{cmd}` puts ret.to_f (ret.to_f > 0 ) ? 1 : 0 }.inject(0){|sum,x| sum + x } puts color_page is_color_comic = color_page > 3 end return is_color_comic end path = './*.zip' Dir.glob(path).sort.reverse.each{|e| # begin if File.directory? e next end puts e ret = check(e) if ret then puts :color `sudo mv "#{e}" 'プリント' ` end }