首页 > 解决方案 > 如何在 AWS lambda 上导入 opencv 模块

问题描述

我正在处理需要我在 AWS 云上运行代码的项目,我尝试了一些教程,并且我成功地在 AWS lambda 上使用了 python numpy 模块,即使我使用的是窗口操作系统,遵循 https:// serverless.com/blog/serverless-python-packaging/

但是,我想导入opencv,我安装了opencv-python-headless by pip install opencv-python-headless. 毕竟,我无法完成我的开发,被告知“解压缩后的大小必须小于 262144000 字节”,这是真的,因为我的 .zip 文件的大小超过了 300000000 字节。

我的问题是我可以安装更简单的opencv,所以我可以拥有小于一定数量的包,我只想要一些关于cv2的代码:

faceCascade = cv2.CascadeClassifier(cascPath)
image = cv2.imread(imagePath, cv2.IMREAD_GRAYSCALE )

faces = faceCascade.detectMultiScale(
image,
scaleFactor=1.2,
minNeighbors=5,
minSize=(30, 50),
flags = cv2.CASCADE_SCALE_IMAGE
)

for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
......
lastimg = cv2.resize(crop_img, (182, 182))
cv2.imwrite("crop_{}".format(imagePath), lastimg)

或者有什么方法可以在 AWS 云上运行这些代码,(例如,我可以在 AWS S3 上上传我的 opencv 模块,并在运行上述 python 代码时下载它。

标签: pythonamazon-web-servicesaws-lambdacv2

解决方案


我的问题是我可以安装更简单的opencv,所以我可以拥有小于一定数量的包(...)。

为了实现这一点,您应该自己构建 opencv。

通过这种方式,您可以设置构建选项并创建最适合您需求的版本。

以下是带有说明和构建选项的文档: https ://docs.opencv.org/3.4/d7/d9f/tutorial_linux_install.html

看看这个与你的目标相同的构建示例: https ://github.com/aeddi/aws-lambda-python-opencv/blob/master/build.sh


或者有什么方法可以在 AWS 云上运行这些代码,(例如,我可以在 AWS S3 上上传我的 opencv 模块,并在运行上述 python 代码时下载它。

可悲的是,我不知道。


推荐阅读