I have created a very simple script with p5.js and ml5.js as per this tutorial.
In the setup function, upon clicking on a button, I am adding images to the classifier. However, when I click on the button, I get the pixels error. This is how my directory looks like
let pinkButton
console.log('ml5 version:', ml5.version);
function gotResults(error, results) {
console.log("ERROR", error);
}
function setup() {
mobileNet = ml5.featureExtractor('MobileNet')
classifier = mobileNet.classification()
pinkButton = createButton('add pink')
pinkButton.mousePressed(function() {
classifier.addImage('./images/pink/1.png', 'pink')
classifier.addImage('./images/pink/2.png', 'pink')
classifier.addImage('./images/pink/3.png', 'pink')
})
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.9.0/p5.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.9.0/addons/p5.dom.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.9.0/addons/p5.sound.min.js"></script>
<!-- ml5 -->
<script src="https://unpkg.com/ml5@0.4.3/dist/ml5.min.js"></script>
addImage
add an HTMl imageElement and not a url. Therefore to add an image either the image is already loaded in the page and it can be queried or a new image needs to be created.
Option 1: image already loaded
image = document.querySelector("use-css-selector")
classifier.addImage(image, label)
Option 2: create a new image
function load(url){
return new Promise((resolve, reject) => {
const im = new Image()
im.crossOrigin = 'anonymous'
im.src = 'url'
im.onload = () => {
resolve(im)
}
})
}
image = await load(url)
classifier.addImage(image, label)