Загрузить классификатор на Heroku Python

Я загружаю каскадный классификатор из файла в OpenCV, используя python. Поскольку метод CascadeClassifier() требует, чтобы имя файла было абсолютным именем файла, я должен загрузить абсолютное имя файла.

Однако я развертываю и использую его на Heroku, и я не могу получить абсолютный путь к файлу. Я пробовал использовать os.getcwd() + '\cascader_file.xml', но это все равно не работает.

Я хотел бы знать, как загрузить классификатор при развертывании Heroku.


person Ace Falobi    schedule 01.12.2017    source источник


Ответы (2)


Я понял. Все, что мне нужно было сделать, это использовать метод os.path.abspath() для преобразования относительного пути в абсолютный путь.

person Ace Falobi    schedule 01.12.2017

если файл, который вы ищете, находится рядом с вашим сценарием, вы можете получить каталог сценария, а затем найти целевой файл ресурсов/конфигураций. Это лучшая практика, чем использование os.getcwd, поскольку ваш текущий каталог может не совпадать с каталогом вашего скрипта.

например, ваш каталог выглядит так:

-- my_project
  |-- main.py
  |-- cascader_file.xml

чтобы найти cascader_file.xml в сценарии main.py:

d = os.path.dirname(os.path.abspath(__file__))  # your script's dir, my_project
filepath = os.path.join(d, "cascader_file.xml")
filepath = os.path.abspath(filepath) # make it an absolute path

Кстати, использование os.path.join более безопасно и более совместимо с платформой, чем прямое объединение частей пути.

person Yun Luo    schedule 01.12.2017