如何使用brython使用OpenCV python库

2024-04-25 08:30:18 发布

您现在位置: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项目包含一些库的导入语句,这些语句是我直接安装到操作系统中的 使用

^{pr2}$

项目包含的导入语句为

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

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

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


Tags: 项目代码orgimportinfoapihttp终端
1条回答
网友
1楼 · 发布于 2024-04-25 08:30:18

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的纯Python3代码,但这些文件必须放在通过HTTP提供服务的特定路径中,以便Brython的导入机制可以获取它们

相关问题 更多 >