【macOS Mojave】Openposeの導入からエラー駆逐・実行まで


##環境
・macOS Mojave
・version 10.14.2 (18C54)
・MacBook(Retina, 12-inch , 2017)
![Mojave](https://dotstud.io/img/blog/224/00_eyecatch.png)


##導入 ・ インストール
基本的にインストールは[こちらのリンク](https://qiita.com/ume1126/items/cc2ae610418296e6db22)に従ってください．
かなりうまくまとまっています．OSがHighSierraまでの人はすんなり行けると思います．

##エラー駆逐
OSをMojaveにアップデートした人はここから地獄を見ます．しかし大丈夫です！この記事に従えば確実に解決できるので根気よく以下の作業に勤しみエラーを駆逐していきましょう．

---


先ほどのリンク先に従ってanacondaの仮想環境構築，gitのcloneが終わり，ようやくrun.pyを

```
$ python run.py --model=mobilenet_thin --resize=432x368 --image=./images/p1.jpg
```
のように実行しても，エラーが出てうまくいかないと思います．

この場合，[公式のREADME](https://github.com/ildoonet/tf-pose-estimation)にも書いてあるように，
「~/tf-pose-estimation/tf_pose/pafprocess/」へチェンジディレクトリして，

```
$ swig -python -c++ pafprocess.i && python3 setup.py build_ext --inplace
```
を実行してください．

そしてここで，さらに重ねて以下のようなエラーが出る方がいると思います．
（出なかった場合は飛ばして結構です．）

```
pafprocess $ sudo python setup.py build_ext --inplace
running build_ext
building '_pafprocess' extension
swigging pafprocess.i to pafprocess_wrap.cpp
swig -python -c++ -o pafprocess_wrap.cpp pafprocess.i
g++ -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/anaconda3/include -arch x86_64 -I/anaconda3/include -arch x86_64 -I/anaconda3/lib/python3.6/site-packages/numpy/core/include -I. -I/anaconda3/include/python3.6m -c pafprocess.cpp -o build/temp.macosx-10.7-x86_64-3.6/pafprocess.o
warning: include path for stdlibc++ headers not found; pass '-std=libc++' on the command line to use the libc++
standard library instead [-Wstdlibcxx-not-found]
pafprocess.cpp:1:10: fatal error: 'iostream' file not found
#include 
^~~~~~~~~~
1 warning and 1 error generated.
error: command 'g++' failed with exit status 1
```


ここでエラーが出た方は，XcodeのCommand Line Tools のバージョンに問題があります．
Mojaveにアップデートした際に，XcodeのCommand Line Toolsもアップデートした方は"Command Line Tools (macOS 10.14) for Xcode 10.1"もしくは "Command Line Tools (macOS 10.14) for Xcode 10"の状態になっており，これが原因で上記のエラーが出ています．

Xcode 10以降のバージョンが対応していないため，Xcode 9以前を追加でインストールします．

私の場合は[More Downloads for Apple Developers](https://developer.apple.com/download/more/)のサイトで，"Command Line Tools (macOS 10.13) for Xcode 9.4.1"のdmgファイルをダウンロードしてインストールしたところrun.pyの実行がうまくいきました．
※10.14に対して10.13でOSのバージョンが合ってませんがうまくいきます．

<img width="1168" alt="スクリーンショット 2018-12-22 1.47.35.png" src="https://qiita-image-store.s3.amazonaws.com/0/191313/cdbd9c36-ebe7-f9a5-c1f6-d8c561b6fea6.png">
（+をクリックすると右側にdmgファイルが現れるのでそこからダウンロードします．）



run.pyの実行の際，matplotlibのimportエラーが出ましたので，[「Pythonでmatplotlibをimportするとエラーが出る場合の対処策（Mac）」](https://qiita.com/Gen6/items/78d83d117ef67e0d53c2)に従って対処しました．

##実行
```
$ python run.py --model=mobilenet_thin --resize=432x368 --image=./images/p1.jpg
```
上記のコマンドで，以下のWindowが出力されれば完了です．お疲れ様でした！
![result](https://camo.qiitausercontent.com/a23a1633593ce3a4dde57eaf11595649120e944e/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139323838372f32303231356632642d366662352d663162332d336532332d3562316464616538323638312e706e67)



###P.S.
機械学習，自動運転などをメインに（たまにそれ以外も）発信しているのでぜひこのQiitaと [twitterのフォロー](https://twitter.com/ryosanworld)おねがいします．



##参考URL
https://github.com/ildoonet/tf-pose-estimation/issues/361
https://stackoverflow.com/questions/52441952/os-x-ld-library-not-found-for-lstdc