如何使用brython来操作OpenCV python库

3

我有一个完全功能的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抛出的控制台错误无法理解。我正在尝试构建使用Python运行的图像处理软件,该软件在Cordova Android和iOS上运行。

任何帮助将不胜感激。 提前致谢

1个回答

3
Brython是Python代码的翻译器。虽然它与Python 3.5实现非常兼容,但它无法运行本地代码。也就是说,使用本地代码的项目(例如openCV等)不能在Brython上运行,因为它无法将本地x86二进制文件“翻译”为兼容的javascript对象,就像它对Python源代码所做的那样。
其他方法如“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函数。你只需要使用像Flask或Pyramid这样的常见Python框架,在HTTP视图中公开所需的openCV功能-使用Brython传输图像数据和操作元数据之间的代码设置不是一件难事。
另外注意:Brython不允许您导入您已安装在系统上的任意文件-虽然它可能适用于任何不执行I/O的纯Python3代码,但这些文件必须放置在特定的路径中,通过HTTP提供服务,以便Brython的导入机制可以获取它们。

感谢您提供的宝贵信息,但遗憾的是JavaScript封装Python不支持大部分原生Python功能。而且,我的目标是让实现离线工作,通过AJAX调用托管我的Python代码的想法对我来说并不是一个好主意。再次感谢您真正有价值的支持,因为提供关于Python-JavaScript封装的帮助的在线渠道非常少。 - mohammedirfan655

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接