7月 16, 2017
kamata

macOS10.8にPython3, opencv3, wxPython4, PyInstaller3 をインストール


10.8で環境構築しなくてはいけなくなったので、作業メモ。 Parallelsに10.8を新規インストールした直後の状態で作業してます。

ホームディレクトリは、/Users/yukioです

■ CommandLineToolsとXcodeのインストール

command_line_tools_for_osx_mountain_lion_april_2014.dmg
xcode_5.1.1.dmg

をAppleから取得してインストール

■ homebrew のインストール
> ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

・確認
> brew doctor

古いOSだから、これもやっとけと言われるので実行
> brew install curl

・バージョンの確認
> brew -v

次のメッセージが出たが、何もしない
For compilers to find this software you may need to set:
LDFLAGS: -L/usr/local/opt/curl/lib
CPPFLAGS: -I/usr/local/opt/curl/include
For pkg-config to find this software you may need to set:
PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig

■ python3.4.3のインストール
・pyenvをインストール
> brew install pyenv

・pyenvにパスを通す
> echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
> echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
> echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

・3.4.3をインストール(PyInstallerで使うので--enable-frameworkをつける)
> env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.4.3

インストール終了後、リハッシュしてグローバルに設定する
> pyenv rehash
> pyenv global 3.4.3

・確認
> which python
/Users/yukio/.pyenv/shims/python

> python -V
Python 3.4.3

■ 古いので、新しくする
> pip install --upgrade pip
> pip install --upgrade setuptools

■ wxPython4のインストール
> pip install https://pypi.python.org/packages/8b/a1/b1715ef2db427c78a990782c62aae03353da38604d8e7eeb7c61cf27a5a4/wxPython-4.0.0a3-cp34-cp34m-macosx_10_6_intel.whl#md5=ec07ac30a395dc5e25da532ade375223

下記が出て終了
>>Successfully installed six-1.10.0 wxPython-4.0.0a3

・確認
> python
>>> import wx
>>>

■ OpenCV3のインストール
・関連モジュール
> pip install numpy
> brew install cmake

途中Javaのインストールダイアログがでるので、インストール。

> brew install jpeg libpng libtiff openexr
> brew install eigen tbb

次のメッセージが出た。
'''
Python modules have been installed and Homebrew's site-packages is not
in your Python sys.path, so you will not be able to import the modules
this formula installed. If you plan to develop with these modules,
please run:
mkdir -p /Users/yukio/Library/Python/3.4/lib/python/site-packages
echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/yukio/Library/Python/3.4/lib/python/site-packages/homebrew.pth
'''
よって、これに従って、下記を実行

> mkdir -p /Users/yukio/Library/Python/3.4/lib/python/site-packages
> echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/yukio/Library/Python/3.4/lib/python/site-packages/homebrew.pth

・OpenCVダウンロード(3.2を使用する)

・wgetのインストール(この方法じゃなくても、gitなどで3.2が取得できればOK)
> cd ~
> brew install wget
時間がかかった。

・ダウンロード
> wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.2.0.zip
> wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.2.0.zip

それぞれ解凍し、opencv、opencv_contribの名前にして、ホームに配置

・buildディレクトリの作成
> cd ~/opencv
> mkdir build
> cd build

・Python3.4のライブラリ、インクルード、エグゼのパスを確認する
/Users/yukio/.pyenv/versions/3.4.3/Python.framework/Versions/3.4/lib/python3.4/libpython3.4.dylib
/Users/yukio/.pyenv/versions/3.4.3/Python.framework/Versions/3.4/include/python3.4m
/Users/yukio/.pyenv/versions/3.4.3/Python.framework/Versions/3.4/bin/python3.4

・brewで出たメッセージがきになるので、やっておく。
> export CPPFLAGS=-I/usr/local/opt/curl/include
> export LDFLAGS=-L/usr/local/opt/curl/lib
> export PKG_CONFIG_PATH=/usr/local/opt/curl/lib/pkgconfig

・ビルドする
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D PYTHON_LIBRARY=/Users/yukio/.pyenv/versions/3.4.3/Python.framework/Versions/3.4/lib/python3.4/libpython3.4.dylib \
-D PYTHON_INCLUDE_DIR=/Users/yukio/.pyenv/versions/3.4.3/Python.framework/Versions/3.4/include/python3.4m \
-D PYTHON_EXECUTABLE=/Users/yukio/.pyenv/versions/3.4.3/Python.framework/Versions/3.4/bin/python3.4 \
-D PYTHON_PACKAGES_PATH=/Users/yukio/.pyenv/versions/3.4.3/lib/python3.4/site-packages \
-D WITH_TBB=ON \
-D WITH_V4L=ON \
-D WITH_FFMPEG=OFF \
-D BUILD_opencv_java=OFF \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D INSTALL_C_EXAMPLES=OFF ..

・こんなのが帰ってきたので、OKでしょう。
-- Python 2:
-- Interpreter: NO
--
-- Python 3:
-- Interpreter: /Users/yukio/.pyenv/shims/python3.4 (ver 3.4.3)
-- Libraries: /Users/yukio/.pyenv/versions/3.4.3/Python.framework/Versions/3.4/lib/python3.4/libpython3.4.dylib (ver 3.4.3)
-- numpy: /Users/yukio/.pyenv/versions/3.4.3/Python.framework/Versions/3.4/lib/python3.4/site-packages/numpy/core/include (ver 1.13.1)
-- packages path: lib/python3.4/site-packages
--
-- Python (for build): /Users/yukio/.pyenv/shims/python3.4
--

・メイク
> make -j4

・エラー
ここからが、大変だった(十数回やり直してます)。
まず、こんなメッセージでエラーとなる。
/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h:356:29: note: 'activeVideoMinFrameDuration' declared

・対策
/System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h の356行目
@property(nonatomic) CMTime activeVideoMinFrameDuration NS_AVAILABLE(10_7, NA);

となっている。この次に、下記を追加した。
@property(nonatomic) CMTime activeVideoMaxFrameDuration NS_AVAILABLE(10_7, NA);

・またメイク
> make -j4

・あともう少しというところでエラー
[ 98%] Building CXX object modules/stitching/CMakeFiles/opencv_perf_stitching.dir/perf/opencl/perf_stitch.cpp.o
/Users/yukio/opencv_contrib/modules/optflow/perf/org/perf_disflow.cpp:89:41: error: call to 'pow' is ambiguous
Mat tmp(Size(dst_frame1.cols / (int)pow(2, src_scale), dst_frame1.rows / (int)pow(2, src_scale)), CV_8U);

/Users/yukio/opencv_contrib/modules/optflow/perf/org/perf_disflow.cpp:94:56: error: call to 'pow' is ambiguous
Mat displacement_field(Size(dst_frame1.cols / (int)pow(2, OF_scale), dst_frame1.rows / (int)pow(2, OF_scale)),

・対策
~ opencv_contrib/modules/optflow/perf/org/perf_disflow.cppの89行目を下記に変更

Mat tmp(Size(dst_frame1.cols / (1 < < src_scale), dst_frame1.rows / (1 << src_scale)), CV_8U);

94行目を下記に変更
Mat displacement_field(Size(dst_frame1.cols / (1 << OF_scale), dst_frame1.rows / (1 << OF_scale)),

この情報源は、https://github.com/opencv/opencv_contrib/pull/1208/files です。

・またまたメイク
> make -j4

いくつかwarningは出たが、
[100%] Linking CXX shared module ../../lib/python3/cv2.so
[100%] Built target opencv_python3

で終了。

・インストール
> sudo make install
--
--
-- Installing: /usr/local/bin/opencv_traincascade
-- Installing: /usr/local/bin/opencv_createsamples
-- Installing: /usr/local/bin/opencv_annotation
-- Installing: /usr/local/bin/opencv_visualisation
-- Installing: /usr/local/bin/opencv_interactive-calibration
-- Installing: /usr/local/bin/opencv_version
で完了

・cv2.soの移動
> ~ cd /usr/local/lib/python3.4/site-packages/
> ls -l *.so
-rwxr-xr-x 1 root admin 3858024 7 16 00:50 cv2.so

と出来ている。

> mv cv2.so /Users/yukio/.pyenv/versions/3.4.3/Python.framework/Versions/3.4/lib/python3.4/site-packages/
で移動。

・確認
> python
>>> import cv2
>>>

■ pyinstallerのインストール

pip install pyinstaller

>>Successfully installed pyinstaller-3.2.1

以上で、macOS10.8にpython3, Opencv3, wxPython4, PyInstaller3 の設定が完了しました。

Leave a comment