如何使用brython使用OpenCV python库



我有一个功能齐全的Python项目,它已经通过终端直接进行了测试。

但当我搜索如何将Python代码与JavaScript包装器集成时,我发现开源API的很少

http://www.brython.info/
http://www.skulpt.org/
http://pypyjs.org/
http://transcrypt.org/
http://stromberg.dnsalias.org/~strombrg/pybrowser/python-browser.html

我用过brython&能够运行一些基本的python代码

但是我的python项目包含一些库的导入语句,这些库是我直接安装到操作系统中的使用

apt-get install python-opencv
apt-get install python-numpy
apt-get install python-skimage
apt-get install cython
pip install --user imutils
pip install --user scikit-image

项目包含作为的导入语句

import imutils
from skimage.filter import threshold_adaptive
import numpy as np
import argparse
import cv2

我的目标是能够在Cordova项目上使用JavaScript包装器运行我的python代码,但由于这些库在默认情况下不可用,我尝试下载它们&通过本地路径导入,但随后我开始面临许多导入错误&brython抛出的控制台错误是不可理解的。我正在尝试使用运行在Cordova Android上的Python构建图像处理软件;iOS。

如有任何帮助,我们将不胜感激。提前感谢

Brython是Python代码的transpiler-

虽然它很好地兼容了Python3.5实现,但它绝对不能运行本机代码。也就是说:使用本机代码的项目,如openCV等,无法使用Brython运行,因为它不会像使用Python源代码那样,将本机x86二进制文件"转换"为兼容的javascript对象。

像"skulpt"这样的其他方法工作起来很困难:它们将Python运行时本身的C代码编译成javascript——如果它们可以选择将二进制Python模块与Python运行时一起编译,那么它们就可以工作了。(我不熟悉Skulpt或其他客户端Python方法,不知道这是否至少是可能的)。

但即使它能工作,openCV也充分利用了现代CPU的优势,包括SIMD指令,甚至可能使用GPU。所有这些都将在Javascript中进行模拟(如果它真的有效的话),带来3或4个数量级的性能损失,更不用说文件I/O的完全修改条件了(例如:不存在-如果你调用的代码没有任何文件I/O副作用,你可能会处理HTTP请求和HTML本地存储)。

在浏览器上运行本机代码(nacl)和其他方法的意义上有一些努力,但我不知道这些方法的状态,或者这些方法在浏览器上的cPython运行时。

那有什么可能呢

让你的图像处理代码服务器端,并构建一个后端,允许你从Brython端的代码调用服务器上的RPC函数
您只需要在HTTP视图中公开所需的openCV功能,使用常见的Python框架(如Flask或Pyramid)-使用Brython设置代码在浏览器和服务器之间传输图像数据和操作元数据并不困难。

另一个旁注:

Brython不允许您导入安装在系统上的任意文件-虽然它可能与任何不执行I/O的pure-Python3代码一起工作,但这些文件必须放置在通过HTTP提供服务的特定路径中,这样Brython的导入机制才能获得

最新更新