如何在 React WebApp 中集成 OpenCV.js?

Posted

技术标签:

【中文标题】如何在 React WebApp 中集成 OpenCV.js?【英文标题】:How to integrate OpenCV.js in a React WebApp? 【发布时间】:2019-04-30 05:22:56 【问题描述】:

我是 javascript 和 React 的新手。我想将 OpenCV.js 嵌入到一个基本的 React.js Web 应用程序中,以构建一个在线客户端文档扫描仪(我已经有了用 Python 开发的图像处理管道)。

我使用yarn create react-app 获得了一个基本的工作 React 沙箱,其中包含:App.js 是主要的 React 组件,index.js 将其插入 DOM。我添加了一个自定义 imageProcessing.js 文件,其中将包含我的图像处理管道。 yarn start 命令可用于编译所有内容并在我的浏览器中显示结果。

为了在这个管道中使用OpenCV,我从official page下载了opencv.js,放在imageProcessing.js旁边,最后通过const cv = require('../lib/opencv')调用。 问题是 yarn start 命令编译源代码需要几个小时,显然不可能开发任何东西。

现在我的问题是:如何在我的源代码中使用沉重的opencv.js (13MB) 有效地编译我的 Web 应用程序? 他们是集成 lib 的更好方法吗?

感谢您的帮助!

【问题讨论】:

opencv.js 作为<script> 包含在您的index.html 中。 你也可以查看brainhub.eu/blog/opencv-react-native-image-processing 谢谢,Chris G。对于我对这些语言的巨大误解,我真的很抱歉,但现在我有一个` ` 在我的 HTML 文件中,我应该如何将它导入我的 imageProcessing.js 以便在其中使用例如 cv.imread() 如果 imageProcessing.js 被 webpack 打包,你需要把 /* global cv */ 放在顶部。这应该允许您在脚本中使用cv 而不会抱怨 cv 未定义。 @fewber 你找到解决方案可以发布你的代码吗? 【参考方案1】:

您可以使用 cdn 而不是在本地使用这种方式 react 不会打扰您。 (但请确保您没有/没有足够的数据限制,因为 opencv.js 是一个繁重的库,并且每次重新加载页面时都会请求...)但是您可以将该库与 PWA 一起存储,以便它'将opencv.js存储在浏览器的缓存中&每当你重新加载页面时它会发送缓存文件而不是请求1000次......&显然它会减少带宽使用&其他一点是你可以在useEffect中使用它们的函数方法或外部组件函数

// opencv.js code here

function App(props)...

function App(props)
    useEffect(() => 

    // opencv.js code here

    , [])

确保在加载 opencv.js 文件时让用户知道后台运行的一些繁重负载...

【讨论】:

以上是关于如何在 React WebApp 中集成 OpenCV.js?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 React Native 中集成 QuickBlox?

如何在 React 应用程序中集成 keycloak 身份验证?

如何在使用react-router路由的组件中集成错误边界

基于 Expo 在 React Native 应用中集成华为移动服务

如何在 Unity 中集成 xBim?

如何在intelliji idea中集成nodejs