# 無 保 証 で す
当方執筆の技術情報に関するライセンス、免責事項、禁止事項
#総合もくじ
Python3.7.x+OpenCV4.1.x+wxPython4.0.x+USBWebcamのクロスプラットフォームな環境構築事例集
Sabayon Linux 向け Tips
Sabayon Linux 19.03 を実機インストールし日本語環境を構築する - Qiita
想定する運用スタイル
- OpenCV を利用する GUI アプリケーションを wxPython により構築する。
- Webcam を USB 接続し OpenCV から利用する。
- Python 向けパッケージは pip + venv で管理する。
- 異なるプラットフォームにおける作業手順を出来るだけ統一化する。1
※ インストール済みの Python パッケージ全てのアップグレードについては以下を参照下さい。
How to upgrade all Python packages with pip? - Stack Overflow
環境構築スクリプト記述例
Sabayon 向け環境構築スクリプト
#!/bin/sh
# variables
VENV_DIR="$HOME/testenv"
WXPYTHON_VERSION="4.0.6"
# install basic build dependencies
cd || exit 1
echo "Enter root password"
su -l -c "LANG=en_US.UTF-8 /usr/bin/equo update"
echo "Enter root password"
su -l -c "LANG=en_US.UTF-8 /usr/bin/equo install sys-devel/gcc dev-util/cmake dev-python/pip --ask" || exit 2
# activate python3's virtual environment
test -d $VENV_DIR || mkdir $VENV_DIR
cd $VENV_DIR || exit 3
test -d $VENV_DIR/py3env || python3 -m venv ./py3env
. ./py3env/bin/activate || exit 4
pip install --upgrade pip setuptools || exit 5
# install opencv-python and wxPython
test -f $VENV_DIR/requirements.txt && rm "$VENV_DIR/requirements.txt"
test -d $VENV_DIR/requirements && rm -r "$VENV_DIR/requirements"
mkdir $VENV_DIR/requirements
cd $VENV_DIR/requirements || exit 6
curl -LO https://raw.githubusercontent.com/wxWidgets/Phoenix/wxPython-$WXPYTHON_VERSION/requirements/devel.txt || exit 7
curl -LO https://raw.githubusercontent.com/wxWidgets/Phoenix/wxPython-$WXPYTHON_VERSION/requirements/install.txt || exit 8
cd $VENV_DIR || exit 9
curl -LO https://raw.githubusercontent.com/wxWidgets/Phoenix/wxPython-$WXPYTHON_VERSION/requirements.txt || exit 10
pip install -r requirements.txt || exit 11
pip install opencv-python wxPython==$WXPYTHON_VERSION || exit 12
rm "requirements.txt"
rm -r "requirements"
# deactivate python3's virtual environment
deactivate
cd || exit 13
exit 0
※ 終了ステータスの使い方が少し変則的かもしれません。
事前準備:適切なミラーの選択
su -l -c "LANG=en_US.UTF-8 /usr/bin/equo update"
su -l -c "LANG=en_US.UTF-8 /usr/bin/equo repo mirrorsort sabayon-weekly"
事前準備:gcc と cmake の導入
su -l -c "LANG=en_US.UTF-8 /usr/bin/equo update"
su -l -c "LANG=en_US.UTF-8 /usr/bin/equo install sys-devel/gcc dev-util/cmake --ask"
事前準備:Python3 の環境構築
※ 2系 と 3系 の優先度など、システム全体にかかわる Python の設定は eselect python
から行えます。2
pip の導入
su -l -c "LANG=en_US.UTF-8 /usr/bin/equo update"
su -l -c "LANG=en_US.UTF-8 /usr/bin/equo install dev-python/pip --ask"
venv による仮想環境の構築
cd || exit
test -d $HOME/testenv || mkdir $HOME/testenv
cd $HOME/testenv || exit
python3 -m venv ./py3env
. ./py3env/bin/activate
pip install --upgrade pip setuptools
deactivate
※ direnv を用いることで、対象ディレクトリに移動するだけで仮想環境が開始されるよう設定出来るそうです。
BuildWxPythonOnRaspberryPi - wxPyWiki より引用
If your lazy like most programmers. Check out https://direnv.net/ and https://github.com/direnv/direnv/wiki/Python with some fussing the virtenv will load automagically when you enter a directory.
参考とした文献
仮想環境 - python.jp
https://www.python.jp/install/centos/virtualenv.html
venv --- 仮想環境の作成 — Python 3.7.4 ドキュメント
https://docs.python.org/ja/3/library/venv.html
opencv-python と wxPython の導入:pip を利用する場合
OpenCV 4.1.x のインストール
cd $HOME/testenv || exit
. ./py3env/bin/activate || exit
pip install opencv-python
pip show opencv-python
deactivate
cd || exit
wxPython(4.0.6)のインストール
cd $HOME/testenv || exit
. ./py3env/bin/activate || exit
WXPYTHON_VERSION=4.0.6
test -d Downloads || mkdir Downloads
cd Downloads || exit
test -d wxPython-$WXPYTHON_VERSION-requirements && rm -r "wxPython-$WXPYTHON_VERSION-requirements"
mkdir wxPython-$WXPYTHON_VERSION-requirements
cd wxPython-$WXPYTHON_VERSION-requirements || exit
curl -LO https://raw.githubusercontent.com/wxWidgets/Phoenix/wxPython-$WXPYTHON_VERSION/requirements.txt
mkdir requirements
cd requirements || exit
curl -LO https://raw.githubusercontent.com/wxWidgets/Phoenix/wxPython-$WXPYTHON_VERSION/requirements/devel.txt
curl -LO https://raw.githubusercontent.com/wxWidgets/Phoenix/wxPython-$WXPYTHON_VERSION/requirements/install.txt
cd ../
pip install -r requirements.txt
pip install wxPython==$WXPYTHON_VERSION
pip show wxPython
unset WXPYTHON_VERSION
deactivate
cd || exit
opencv-python と wxPython の導入:ソースコードからビルド&インストールする場合
OpenCV 4.1.2 のビルド&インストール
OpenCV をソースコードからビルドする利点と問題点
- 利点:
- 最新版を手軽に試すことが出来る。
- ビルドオプションを細かく指定してのビルド&インストールが可能である。
- Qt のバージョンが揃うので UI のアイコン表示等が崩れない。
-
問題点:
- pip list に現れない。
ビルド&インストール例
cd $HOME/testenv || exit
. ./py3env/bin/activate || exit # 仮想環境を開始する
OPENCV_VERSION=4.1.2
pip uninstall opencv-python # pipから導入した opencv-python があれば削除しておく
pip install numpy # opencv-python が構築時、及び導入時に依存する numpy をインストールする
test -d Downloads || mkdir Downloads
cd Downloads || exit
curl -LO https://github.com/opencv/opencv/archive/$OPENCV_VERSION.tar.gz # GitHub から OpenCV のソースコードをダウンロードする
tar zxf $OPENCV_VERSION.tar.gz
cd opencv-$OPENCV_VERSION || exit
mkdir build && cd build || exit
cmake -D CMAKE_BUILD_TYPE=Release -D WITH_QT=YES -D CMAKE_INSTALL_PREFIX=$HOME/testenv/py3env/ ..
make -j$(nproc)
make install # ホームディレクトリ内、仮想環境内部にインストールするのでスーパーユーザー権限は必要ない
python3 -c "import cv2; print(cv2.__version__)" # 導入した opencv-python のバージョンを確認する
python3 -c "import cv2; print(cv2.getBuildInformation())" # 導入した opencv のビルドオプションを確認する
python3 $HOME/testenv/Downloads/opencv-$OPENCV_VERSION/samples/python/video.py # Webcam からの映像を確認、ESC キーでサンプルプログラムは終了する
unset OPENCV_VERSION
deactivate # 仮想環境を終了する
cd || exit
※ マルチコアCPUなら例えばmake -j$(nproc)
やmake -j$(grep processor /proc/cpuinfo | wc -l)
などとオプションをわたすことで構築時間を短縮出来ます。3 4 5
###参考とした文献
OpenCV: Installation in Linux
https://docs.opencv.org/4.1.2/d7/d9f/tutorial_linux_install.html
OpenCVのビルド情報を確認するgetBuildInformation() | note.nkmk.me
https://note.nkmk.me/python-opencv-getbuildinformation/
Python Tips:ワンライナーが書きたい - Life with Python
https://www.lifewithpython.com/2015/01/python-use-command-one-liner.html
wxPython 4.0.6 のビルド&インストール
wxPython をソースコードからビルドする利点と問題点
- 利点:
- ビルドオプションを柔軟に指定出来る。
- システムに既に wxWidgets が導入済みであれば build.py のオプションで
--use_syswx
を指定することでそちらを利用出来る。 - 問題点:
- python3 build.py clean を行う際に誤って python3 build.py cleanall とすると sip 配下のファイルやフォルダが一掃されてしまう。
ビルド&インストール例
cd $HOME/testenv || exit
. ./py3env/bin/activate || exit # 仮想環境を開始する
WXPYTHON_VERSION=4.0.6
pip uninstall wxPython # pipから導入した wxPython があれば削除しておく
test -d Downloads || mkdir Downloads
cd Downloads || exit
pip download wxPython==$WXPYTHON_VERSION --no-deps --no-binary :all: # PyPI から wxPython のソースコードをダウンロードする
tar zxf wxPython-$WXPYTHON_VERSION.tar.gz
cd wxPython-$WXPYTHON_VERSION || exit
pip install -r requirements.txt # 構築時依存及び導入時依存 python パッケージのインストールを行う
python3 build.py build bdist_wheel --release --jobs=$(nproc) # wxPython のビルドを行う
pip install dist/wxPython-$WXPYTHON_VERSION-*.whl #wxPython のインストールを行う
pip show wxPython # インストールされた wxPython パッケージの情報を表示する
python3 $HOME/testenv/Downloads/wxPython-$WXPYTHON_VERSION/demo/demo.py # wxPython のデモを実行する
unset WXPYTHON_VERSION
deactivate # 仮想環境を終了する
cd || exit
※ マルチコアCPUなら例えば--jobs=$(nproc)
や--jobs=$(grep processor /proc/cpuinfo | wc -l)
などとオプションをわたすことで構築時間を短縮出来ます。3 4 5
参考とした文献
How to install wxPython - wxPyWiki
https://wiki.wxpython.org/How%20to%20install%20wxPython
BuildWxPythonOnRaspberryPi - wxPyWiki
https://wiki.wxpython.org/BuildWxPythonOnRaspberryPi
Cannot build Phoenix from github master - wxpython-dev@lists.wxwidgets.org
https://wxpython-dev.wxwidgets.narkive.com/Sdn1NNA8/cannot-build-phoenix-from-github-master