Сообщение Re[3]: OpenCV.js смог - если кому интересно от 22.10.2023 6:48
Изменено 04.11.2023 1:33 Артём
Re[3]: OpenCV.js смог - если кому интересно
Здравствуйте, Артём, Вы писали:
Аё>Оба OpenCV и NumJS бросают на попытке операции на 2 массивах с разной shape. Возможно, NumPy под капотом размножает 1 пиксел (вектор) на всю shape чтоб совпадали размеры- хз.
Аё>Попробовать тоже для исходной картинки сделать такого же размера 2 маски одна mean, вторая std и тогда скормить в OpenCV?
\* всe Mat должны удаляться вручную после использования imageRGB.delete(). Мемоизация и авто-удаление за кадром.
Аё>Оба OpenCV и NumJS бросают на попытке операции на 2 массивах с разной shape. Возможно, NumPy под капотом размножает 1 пиксел (вектор) на всю shape чтоб совпадали размеры- хз.
Аё>Попробовать тоже для исходной картинки сделать такого же размера 2 маски одна mean, вторая std и тогда скормить в OpenCV?
// numpy: (img.astype('float32') * self.scale - self.mean) / self.std
const imageRGB32F = new cv.Mat();
const imageRGB = new cv.Mat();
cv.cvtColor(image, imageRGB, cv.COLOR_BGRA2RGB, 3);
imageRGB.convertTo(imageRGB32F, cv.CV_32F, this.scale);
cv.subtract(imageRGB32F,
new cv.Mat(image.rows, image.cols, cv.CV_32FC3, [...this.mean, 1]),
imageRGB32F);
cv.divide(imageRGB32F,
new cv.Mat(image.rows, image.cols, cv.CV_32FC3, [...this.std, 1]),
imageRGB32F);
data.image = nj.array(imageRGB32F.data32F, 'float32').reshape(...matImageShape(imageRGB32F));\* всe Mat должны удаляться вручную после использования imageRGB.delete(). Мемоизация и авто-удаление за кадром.
Re[3]: OpenCV.js смог - если кому интересно
Здравствуйте, Артём, Вы писали:
Аё>Оба OpenCV и NumJS бросают на попытке операции на 2 массивах с разной shape. Возможно, NumPy под капотом размножает 1 пиксел (вектор) на всю shape чтоб совпадали размеры- хз.
Аё>Попробовать тоже для исходной картинки сделать такого же размера 2 маски одна mean, вторая std и тогда скормить в OpenCV?
\* всe Mat должны удаляться вручную после использования imageRGB.delete(). Мемоизация и авто-удаление за кадром.
PPS всё заработало, всё удалось- сначала как NodeJS, затем в браузере на планшетах и смартфонах в SPA приложении фича SOTA computer vision крутит модели PaddleOCR на движке ONNX Runtime на девайсе.
Спасибо Nuzhny за наводки на этом форуме!
Аё>Оба OpenCV и NumJS бросают на попытке операции на 2 массивах с разной shape. Возможно, NumPy под капотом размножает 1 пиксел (вектор) на всю shape чтоб совпадали размеры- хз.
Аё>Попробовать тоже для исходной картинки сделать такого же размера 2 маски одна mean, вторая std и тогда скормить в OpenCV?
// numpy: (img.astype('float32') * self.scale - self.mean) / self.std
const imageRGB32F = new cv.Mat();
const imageRGB = new cv.Mat();
cv.cvtColor(image, imageRGB, cv.COLOR_BGRA2RGB, 3);
imageRGB.convertTo(imageRGB32F, cv.CV_32F, this.scale);
cv.subtract(imageRGB32F,
new cv.Mat(image.rows, image.cols, cv.CV_32FC3, [...this.mean, 1]),
imageRGB32F);
cv.divide(imageRGB32F,
new cv.Mat(image.rows, image.cols, cv.CV_32FC3, [...this.std, 1]),
imageRGB32F);
data.image = nj.array(imageRGB32F.data32F, 'float32').reshape(...matImageShape(imageRGB32F));\* всe Mat должны удаляться вручную после использования imageRGB.delete(). Мемоизация и авто-удаление за кадром.
PPS всё заработало, всё удалось- сначала как NodeJS, затем в браузере на планшетах и смартфонах в SPA приложении фича SOTA computer vision крутит модели PaddleOCR на движке ONNX Runtime на девайсе.
Спасибо Nuzhny за наводки на этом форуме!