mruby でリアルタイムで映像分類する
8136 ワード
@akuroda さんが mruby-gdを使って画素にアクセスする方法を教えてくれたので @kjunichi さんの mruby-webcam を使ってリアルタイムに映像分類する様にしてみました。
導入の方法は akuroda さんの記事を読んで下さい。
model = TfLite::Model.from_file 'mobilenet_v1_1.0_224_quant.tflite'
interpreter = TfLite::Interpreter.new(model)
interpreter.allocate_tensors
input = interpreter.input_tensor(0)
output = interpreter.output_tensor(0)
wanted_width = input.dim(1)
wanted_height = input.dim(2)
wanted_channel = input.dim(3)
data = Array.new(wanted_height * wanted_width * wanted_channel, 0)
labels = File.read('labels.txt').lines.map {|x| x.strip}
cam = Webcam.new(ARGV[0]||0)
cam.set_size(wanted_width, wanted_height)
cam.each(true) {|img|
decoded = GD::Image.new_from_jpeg_data(img)
(0...wanted_width).each do |x|
(0...wanted_height).each do |y|
pixel = decoded.get_pixel(x, y)
offset = (y * wanted_width + x) * wanted_channel
data[offset+0] = decoded.red(pixel)
data[offset+1] = decoded.green(pixel)
data[offset+2] = decoded.blue(pixel)
end
end
decoded.destroy
input.data = data
interpreter.invoke
output.data.each_with_index do |v, i|
puts "#{i} #{v} #{labels[i]}" if v > 50
end
puts "---"
}
cam.each
はまだマージされてないので今しばらくお待ちください。
Author And Source
この問題について(mruby でリアルタイムで映像分類する), 我々は、より多くの情報をここで見つけました https://qiita.com/mattn/items/c654945c41f3162a5024著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .