Я пытаюсь обнаружить объекты, используя модель cocossd tenorflow.
В случае изображения png / jpg: Мой скрипт работает нормально как в ноутбуке, так и в мобильном браузере.
Но в случае видеокадра камеры: Мой скрипт работает нормально в браузере ноутбука, ноон не работает в мобильном браузере.
Вот пример моего кода:
var img = new Image();
img.src = "catDog.jpg";
//I have videoframe buffer
var ubuf = new Uint8Array(videoFrame.buffer(0).buffer);
var imgData = imageCtx.createImageData(imageDiv.width, imageDiv.height)
imgData.data.set(ubuf)
cocoSsd.load().then(model => {
// detect objects in the image.
model.detect(imgData).then(predictions => {
console.log('Predictions: ';
console.log(predictions);
});
});
приведенный выше код работает нормально в браузере ноутбука, но не в мобильном браузере.Хотя, если я использую img вместо imgData, скрипт отлично подойдет как для ноутбука, так и для мобильного телефона.В консоли нет ошибок, а отображаются только прогнозы печати: [] (обнаруженный объект = 0)
Обновление:
Я только что обнаружил некоторую разницу в данных изображения при его создании вбраузер мобильного или ноутбука.Я обновил приведенный выше код следующим образом:
var img = new Image();
//img.src = "catDog.jpg";
//I have videoframe buffer
var ubuf = new Uint8Array(videoFrame.buffer(0).buffer);
var imgData = imageCtx.createImageData(imageDiv.width, imageDiv.height)
imgData.data.set(ubuf)
imageCtx.putImageData(imgData,0,0) // for debuging
img.src=cvImageDiv.toDataURL()
cocoSsd.load().then(model => {
// detect objects in the image.
model.detect(img).then(predictions => {
console.log(img)
console.log('Predictions: ';
console.log(predictions);
});
});
И я нашел из консоли (img), формат img отличается в разных браузерах.и результат тот же: работа в браузере ноутбука, но не в мобильном браузере, но если я поставлю статический способ img, который создается в браузере ноутбука, он работает в обоих местах.
то есть
img.src = 'data:image/png;base64,iVBORw0KGgoAAAANS...AASUVORK5CYII='
// указанное выше значение было получено на ноутбуке, а для ввода жесткого кода в виде img.src прогнозирование хорошо работает как на ноутбуке, так и на мобильном устройстве.
Но
img.src = 'data:image/png;base64,iVBORw0KGgoAAAANS...AAAAAElFTkSuQmCC'
// указанное выше значение былопроизводится в мобильном браузере и для ввода с жестким кодом, предсказание не работает ни в одном из ноутбуков / мобильных браузеров