Re[3]: OpenCV.js смог - если кому интересно
От: Артём Австралия жж
Дата: 22.10.23 06:48
Оценка:
Здравствуйте, Артём, Вы писали:

Аё>Оба 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 за наводки на этом форуме!
Отредактировано 04.11.2023 1:33 Артём . Предыдущая версия . Еще …
Отредактировано 22.10.2023 6:49 Артём . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.