以前、画像の白黒判定をやった
白黒判定が出来るから、スキャンした画像が「プリント」か「雑誌」か判定していけば便利なんじゃないかと
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
}