def setup
createCanvas(300, 440)
background(255)
show_message
classify
end
def classify
img = loadImage('dog_akita.jpg')
image(img, 0, 0, 300, 300)
ML5.classify(img, 5) do |results|
@message.remove
fill("red")
textFont("monospace")
textStyle(BOLD)
textSize(18)
results.each_with_index do |r, i|
# 信頼度とラベルを表示
text(format("%4.1f%% %s", r[:confidence] * 100, r[:label]), 10, 330 + i * 22)
end
end
end
def show_message
@message = createDiv("識別中...").position(100, 320)
@message.style("font-size", "32px")
@message.elt.id = "msg"
# `style` タグを追加(点滅)
css = '
<style>
@keyframes blink {
50% { opacity: 0; }
}
#msg {
animation: blink 1.2s infinite;
}
</style>
'
@message.html(css, true)
end
[ml5.js] ImageClassifier (ml5@0.12.2)
[ml5.js] ImageClassifier (ml5@1.2.1)
画像の内容を認識します。
| 引数名 | 内容 | 備考 | オプション | デフォルト値 |
|---|---|---|---|---|
| img | 認識する対象の画像 | p5imageオブジェクト p5graphicsオブジェクト | ||
| number | 取得する認識結果の個数 | |||
| ... | 認識結果に対する処理 |
なし
・rbCanvas/p5では、ml5.jsの旧バージョン(0.12.2)を利用しています。
ml5.jsの最新バージョンとは仕様や挙動などが異なる場合があります。
ブロック引数「results」は下記のようなデータ構造になっています。
[ # 引数 numberで指定した個数の要素(ハッシュ)を持つ配列
{ # 要素0
confidence: r, # 信頼度
label: str # ラベル
],
{ # 要素1
confidence: r, # 信頼度
label: str # ラベル
],
...
...
...
{ # 要素N
confidence: r, # 信頼度
label: str # ラベル
],
]