我在Java广告中写一个lambda函数想要使用opencv库。我很难理解如何设置它。请帮忙。我可以在本地设置得很好,但我对lambda部分感到很困惑。
编辑:准确地说,我在使用System.LoadLibrary()函数时遇到了问题。 dll在项目文件中,但lambda找不到它。
答案 0 :(得分:2)
Opencv依赖于底层的OS库文件。对于Windows,我们需要opencv_javaXXX.dll文件,对于Windows,我们需要libOpencv_javaXXX.so文件(其中XXX是opencv版本)。如果您没有这些文件,请使用此链接生成http://docs.opencv.org/2.4/doc/tutorials/introduction/desktop_java/java_dev_intro.html
AWS lambda基本上使用AMI名称:amzn-ami-hvm-2016.03.3.x86_64-gp2。这是一台64位的linux机器。为了获得libOpencv_javaXXX.so,我使用AMI名称编译了一个EC2实例:amzn-ami-hvm-2016.03.3.x86_64-gp2(这是亚马逊上的公共AMI)并在这台机器上安装了java的opencv。
获得libOpencv_javaXXX.so后,将其添加到classpath(我将其添加到src / main / resources),然后使用以下代码从JVM进程加载它。
System.load(new ClassPathResource("/libopencv_javaXXX.so").getFile().getAbsolutePath());
System.LoadLibrary()从java lib路径加载库,System.Load()将从绝对路径加载本机库。
答案 1 :(得分:-2)
我建议使用Node.js而不是Java,因为Lambdas可以更好地使用Node.js。
您的代码如下所示:
cv = require('opencv');
//do something with cv...
但在能够运行代码之前,您应该安装OpenCV及其node package:
npm install opencv
这将创建一个node_modules
文件夹。在本地运行代码后,您需要执行一个额外的步骤,然后将所有内容(即your-code.js
和node_modules
文件夹)压缩到lambda-package.zip
并将其上传到AWS Lambda。
Lambda的额外步骤:
Lambda代码在Amazon Linux环境(不是您的本地环境)中运行。这意味着您应该在该环境中构建节点包。您可以启动EC2实例并在该计算机中执行 npm install 部分,也可以使用docker镜像。
这是一篇很好的文章:
https://aws.amazon.com/blogs/compute/nodejs-packages-in-lambda/