Как интегрировать OpenCV с Ionic 3? - PullRequest
0 голосов
/ 09 октября 2018

Я создаю мобильное приложение для измерения тела по фотографии, которую я делаю.как я могу использовать OpenCV для того же?Как интегрировать OpenCV с Ionic Framework?Пожалуйста, помогите.

1 Ответ

0 голосов
/ 31 декабря 2018

По сути, вы можете почувствовать вкус фреймворка opencv.js.Я сделал это, вытащив какую-то ссылку типа https://docs.opencv.org/3.4.1/opencv.js, а затем разместив ее где-нибудь (на случай, если opencv переместит ее на вас).Затем включите этот сценарий в проект Ionic.Будьте осторожны, как вы это делаете, хотя.Это большой файл, поэтому загрузка приложения может занять больше времени.Некоторые параметры, которые я использовал:

Локальный актив

Сохраните файл js в локальных ресурсах и включите его в index.js.Если приложение Ionic развернуто как собственное приложение, то этот ресурс уже находится в приложении и загружается довольно быстро.

<script src="assets/js/opencv.js" async></script>

Динамическая загрузка файла (пример ниже)

async ionViewDidLoad() {

    let loadingScreen = this.loadingCtrl.create({ content: "Loading Scripts. Please Wait..." });

    //Show loading screen & load scripts
    try {
      await loadingScreen.present();
      await this.loadScript();
    }
    catch (error) {
      this.errorMessage = "We had some trouble loading scripts...";
    }
    finally {
      loadingScreen && loadingScreen.dismiss();
    }
}


public loadScript(): Promise<any> {
    return new Promise((resolve, reject) => {
      var isFound = false;
      var scripts = document.getElementsByTagName("script")
      for (var i = 0; i < scripts.length; ++i) {
        if (scripts[i].getAttribute('src') != null && 
scripts[i].getAttribute('src').includes("opencv")) {
          isFound = true;
          return resolve();
        }
      }

      if (!isFound) {
        var dynamicScripts = ["https://docs.opencv.org/3.4.1/opencv.js"];

        for (var i = 0; i < dynamicScripts.length; i++) {
          let scriptNode = document.createElement('script');
          scriptNode.src = dynamicScripts[i];
          scriptNode.type = 'text/javascript';
          scriptNode.async = false;
          scriptNode.charset = 'utf-8';
          document.getElementsByTagName('head')[0].appendChild(scriptNode);

          scriptNode.onload = resolve;
        }
      }
    });
}
...