index.html
<!DOCTYPE html>
<html>
<head>
<title>ml5.js 연습</title>
<meta charset="utf-8">
<script src="https://cdn.jsdelivr.net/npm/p5@1/lib/p5.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/p5@1/lib/addons/p5.sound.min.js"></script>
<script src="https://unpkg.com/ml5@latest/dist/ml5.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/IDMNYU/p5.js-speech@0.0.3/lib/p5.speech.js"></script>
</head>
<body>
<h1>Webcam Image Classification</h1>
<script src="sketch.js"></script>
</body>
</html>
sketch.js
(0)
let mobilenet;
let video;
// callback functions
function modelReady() {
console.log('Model is ready!');
}
// P5.js main functions
function setup() {
createCanvas(640, 480);
background(0);
video = createCapture(VIDEO);
mobilenet = ml5.imageClassifier('MobileNet', video, modelReady);
}
sketch.js
(1)
let mobilenet;
let video;
// callback functions
function modelReady() {
console.log('Model is ready!');
}
// P5.js main functions
function setup() {
createCanvas(640, 480);
background(0);
video = createCapture(VIDEO);
video.hide();
mobilenet = ml5.imageClassifier('MobileNet', video, modelReady);
}
function draw() {
image(video, 0, 0);
}
sketch.js
(2)
let mobilenet;
let video;
// callback functions
function modelReady() {
console.log('Model is ready!');
mobilenet.classify(gotResults);
}
function gotResults(error, results) {
if (error) {
console.log(error);
} else {
console.log(results);
let label = results[0].label;
let confidence = results[0].confidence;
fill(0);
textSize(64);
text(label, 10, height - 100);
createP(label);
createP(confidence);
}
}
// P5.js main functions
function setup() {
createCanvas(640, 480);
background(0);
video = createCapture(VIDEO);
video.hide();
mobilenet = ml5.imageClassifier('MobileNet', video, modelReady);
}
function draw() {
image(video, 0, 0);
}
sketch.js
(3)
let mobilenet;
let video;
let label;
// callback functions
function modelReady() {
console.log('Model is ready!');
mobilenet.classify(gotResults);
}
function gotResults(error, results) {
if (error) {
console.log(error);
} else {
console.log(results);
label = results[0].label;
mobilenet.classify(gotResults); // infinite loop between 2 callback functions
}
}
// P5.js main functions
function setup() {
createCanvas(640, 480);
background(0);
video = createCapture(VIDEO);
video.hide();
mobilenet = ml5.imageClassifier('MobileNet', video, modelReady);
}
function draw() {
image(video, 0, 0);
fill(0, 255, 255);
textSize(32);
text(label, 10, height - 100);
}
sketch.js
(4)
let mobilenet;
let video;
let label;
// callback functions
function modelReady() {
console.log('Model is ready!');
mobilenet.classify(gotResults);
}
function gotResults(error, results) {
if (error) {
console.log(error);
} else {
// console.log(results);
label = results[0].label;
mobilenet.classify(gotResults); // infinite loop between 2 callback functions
}
}
// P5.js main functions
function setup() {
createCanvas(640, 550);
video = createCapture(VIDEO);
video.hide();
mobilenet = ml5.imageClassifier('MobileNet', video, modelReady);
}
function draw() {
background(0);
image(video, 0, 0);
fill(0, 255, 255);
textSize(32);
text(label, 10, height - 20);
}
-sketch.js
(5) by.unkn
let mobilenet;
let video;
let label;
let speech;
function setup() {
createCanvas(640, 550);
video = createCapture(VIDEO);
video.hide();
mobilenet = ml5.imageClassifier('MobileNet', video, modelReady);
speech = new p5.Speech();
}
function draw() {
background(0);
image(video, 0, 0);
fill(0, 255, 255);
textSize(32);
text(label, 10, height - 20);
}
function modelReady() {
console.log('Model is ready!');
mobilenet.classify(gotResults);
}
function gotResults(error, results) {
if (error) {
console.log(error);
} else {
label = results[0].label;
mobilenet.classify(gotResults);
speech.setLang('en-US');
speech.speak(`This would be ${label}`);
}
}
-sketch.js
(6) editing
let mobilenet;
let video;
let label;
let speech;
let button;
let saying;
let toggle;
let loop;
let p1;
function setup() {
createCanvas(640, 550);
video = createCapture(VIDEO);
video.hide();
mobilenet = ml5.imageClassifier('MobileNet', video, modelReady);
speech = new p5.Speech();
speech.setLang('en-US');
button = createButton('click to calssify');
button.position(width+100, height+66);
button.mousePressed(classificationReady);
saying = false;
toggle = createButton('click to change mode');
toggle.position(width+100, height+46);
toggle.mousePressed(changeMode);
loop = false;
p1 = createP("");
p1.style('font-size','25px');
p1.position(width+100, height-26);
}
function draw() {
background(0);
image(video, 0, 0);
fill(0, 255, 255);
textSize(32);
text(label, 10, height - 20);
}
function modelReady() {
console.log('Model is ready!');
}
function classificationReady() {
console.log('classification is ready!');
mobilenet.classify(gotResults);
if(loop == false && saying == true){
saying = false;
}
}
function changeMode(){
if(loop == false){
loop = !loop;
console.log('Loop');
p1.hide();
p1 = createP("Looping");
p1.style('font-size','25px');
p1.position(width+100, height-26);
p1.show();
}else{
loop = !loop;
console.log('noLoop');
p1.hide();
p1 = createP("Not Looping");
p1.style('font-size','25px');
p1.position(width+100, height-26);
p1.show();
}
}
function gotResults(error, results) {
if (error) {
console.log(error);
} else {
label = results[0].label;
mobilenet.classify(gotResults);
if(loop == false){
if(saying == false){
saying = true;
speech.speak(`This would be ${label}`);
}
}else{
if(saying == false){
saying = true;
speech.speak(`This would be ${label}`);
}
else{
saying = false;
}
}
}
}
-sketch.js
(7) by Mike (이것으로 만족하자 ㅠㅠ)
let mobilenet;
let video;
let label;
let speech;
let button;
let saying;
function setup() {
createCanvas(640, 550);
video = createCapture(VIDEO);
video.hide();
mobilenet = ml5.imageClassifier('MobileNet', video, modelReady);
speech = new p5.Speech();
speech.setLang('en-US');
button = createButton('click to calssify');
button.position(width+100, height+66);
button.mousePressed(classificationReady);
}
function draw() {
background(0);
image(video, 0, 0);
fill(0, 255, 255);
textSize(32);
text(label, 10, height - 20);
}
function modelReady() {
console.log('Model is ready!');
}
function classificationReady() {
console.log('classification is ready!');
saying = true;
mobilenet.classify(gotResults);
}
function gotResults(error, results) {
if (error) {
console.log(error);
} else {
label = results[0].label;
if (saying) {
speech.speak(`This would be ${label}`);
saying = false;
}
mobilenet.classify(gotResults);
}
}