githubを利用してソースコードを複数のマシンで共有していると環境依存の部分をできるだけ取り除いて、共通部分だけを共有できるようにする必要がある。
前回の画像認識で、OpenCVに含まれるHarr-likeを利用したカスケード識別機を使っているのだが、この識別機のリファレンスデータも一緒に配布されている。
これはインストールパス依存になるので、以下の方法で共通化した。
まずPythonの実行ファイルのパスを取得して、そこから実行ファイル名を取ってPythonのインストールパスを取得する。
pathPython = sys.executable pathPython = pathPython.replace('python.exe', '')
次にそれにhaar-likeのカスケード識別機のリファレンスデータパスを追加。
os.path.joinはC#でいうPath.Combineで、パスを示す環境依存文字を使わずにパスの接続ができる。
文字列の頭に"r"を付けるとエスケープシーケンスを無視するので、"\"を"\\"と書かずに済む。
pathCascade = os.path.join(pathPython, r'pkgs\libopencv-4.0.1-hbb9e17c_0\Library\etc\haarcascades')
最後に顔や目などのそれぞれのデータパスを作る。
pathCascadeEye = os.path.join(pathCascade, 'haarcascade_eye.xml') pathCascadeFrontFace = os.path.join(pathCascade,'haarcascade_frontalface_default.xml')
sysやosは標準ライブラリーではないので、
import sys import os
をあらかじめインポートしておく必要がある。