2017-02-13 71 views
2

我有一个功能完整的Python项目,它已经通过终端直接进行了测试。如何使用brython使用OpenCV 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 

我的目标是能够运行使用在科尔多瓦项目的JavaScript包装我的Python代码,但由于这些库将无法使用默认情况下,我尝试下载他们&通过本地路径导入,但后来我开始面临很多导入错误& brython引发的控制台错误是不可理解的。我正尝试使用运行在Cordova Android & iOS上的Python构建图像处理软件。

任何帮助,将不胜感激。 由于提前

回答

2

Brython是Python代码transpiler -

虽然这是很好的兼容到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函数。
你只需在HTTP视图中使用像Flask或Pyramid这样的通用Python框架公开所需的openCV功能 - 在浏览器和此服务器之间设置传输图像数据和操作元数据的代码不会很难使用Brython的事情。

另一个侧面说明:

Brython不会让你导入任意文件你已经安装在系统上 - 虽然它可能会与任何纯Python3代码工作不执行I/O时,文件必须放置在通过HTTP服务的特定路径中,以便Brython的导入机制可以获得它们

+0

感谢有价值的信息,但是,很遗憾的知道,用于python的javascript包装将不支持大部分本地python功能。因为我的目标是让实现工作脱机,所以将我的python代码托管在服务器上并通过ajax调用访问的想法对我来说不是一个好主意。 再次感谢真正有价值的支持,因为它们是最少的在线渠道,提供有关Python-JavaScript包装的帮助 – mohammedirfan655