我正在构建一个在其后端使用OpenCV的Web应用程序。我已经在Ubuntu上构建了应用程序(我也在Windows上试过它)并且它工作正常。目前,我正在尝试配置OpenCV以使用Heroku。由于无法使用pip加载OpenCV,因此我读到了使用heroku buildpacks来为服务器环境提供自定义。
以下是我尝试测试两个OpenCV构建包:
我使用Flask构建简单的Web服务器,尝试导入OpenCV:
#hello.py
import os
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
text = ''
try:
import cv2
text = 'success'
except:
text = 'fail'
pass
return text + ' to load openCV'
if __name__ == "__main__":
port = int(os.environ.get("PORT", 5000))
app.run(host='0.0.0.0', port=port)
上面的代码应该在加载OpenCV时返回成功或失败。
然后我通过运行以下命令将Heroku配置为使用(heroku multi buildpack):
heroku buildpacks:设置https://github.com/ddollar/heroku-buildpack-multi
在.buildpacks文件中(多个buildpack需要)我放了https://github.com/heroku/heroku-buildpack-python和https://github.com/slobdell/heroku-buildpack-python-opencv-scipy buildpacks。
第一个用于编译python应用程序以及通过pip.
安装其他模块(例如Flask)。第二个buildpack是应该加载OpenCV的那个。
毕竟,整个申请都没有用!
我在Heroku中获得了(应用程序错误)页面,如下截图所示:
我尝试使用其他buildpack(https://github.com/diogojc/heroku-buildpack-python-opencv-scipy),但我得到了相同的结果。
我的问题是:
我做的步骤有什么问题?
我应该如何在heroku中的应用程序中调用(或使用)OpenCV?
我应该使用import
语句还是其他命令?
答案 0 :(得分:3)
我可以通过以下方式安装:
cd /path/to/your/dir && git init
heroku create MYAPP
(从头开始)
heroku config:add BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git --app MYAPP
按如下方式创建.buildpacks
:
https://github.com/heroku/heroku-buildpack-python
https://github.com/diogojc/heroku-buildpack-python-opencv-scipy#cedar14
git add . && git commit -m 'MESSAGE' && git push heroku master
答案 1 :(得分:0)
以下步骤应解决您面临的openCV问题-
libsm6 libxrender1 libfontconfig1 libice6 -每行一个库。请参见示例Github Link
现在开始构建和部署,您就可以开始了!
答案 2 :(得分:0)
对于今天看到此内容并遇到相同问题的任何人,请将 opencv-python
中的 requirements.txt
切换为 opencv-python-headless
。这回避了有问题的库文件的问题。