代码之家  ›  专栏  ›  技术社区  ›  Sandesh

如何将OpenCV与离子3集成?

  •  1
  • Sandesh  · 技术社区  · 6 年前

    我正在建立一个移动应用程序,通过我拍摄的照片进行身体测量。如何使用OpenCV实现相同的功能?如何将OpenCV与离子框架集成?请帮忙。

    1 回复  |  直到 6 年前
        1
  •  0
  •   BRass    6 年前

    实际上,您可以引入一种opencv.js框架。我做这件事的方式是把一些参考资料 https://docs.opencv.org/3.4.1/opencv.js ,然后将其托管在某个地方(以防opencv将其移动到您身上)。然后在离子工程中加入这个脚本。不过,你要小心。这是一个大文件,因此可能需要更长的时间来加载应用程序。我使用过的一些选项:

    本地资产

    <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;
            }
          }
        });
    }