Blender Python + OpenCV〜インストール〜
前回は、アドオンを起動するとき停止するときにそれぞれ「こんにちは」「さようなら」を言うアドオンを作成しました。
今回は
Blender Python上にOpenCvをインストールしよう
と言う試みです。
ちなみにMacOSXでの手順になります。がWinでも同じ様なことが起きるかも?
そして、以下のサイトを参考に実行しました。
「pipコマンドのインストール」
「opencv」のインストール
参考サイトを参考にしてやればインストール自体は難なく行きました。
問題はその後でした。
※OpenCvをOS上にインストールするまではOKでした
大雑把に
1.「homebrew」コマンドで「pip」コマンドをインストール
2.「OpenCv」を「pip」コマンドでインストール
完了ってな感じでした。。。がここで終わらないのが人生の常(笑)
【問題その1】BlenderのPythonConsoleにて以下のコードを実行するとエラーが起きる
>> import cv2
Traceback (most recent call last):
File "<blender_console>", line 1, in <module>
ImportError: No module named 'cv2'
結局のところは、「cv2」→OpenCvが見つかりませんよ。と言うことなので
パスを通してやればおっけーな訳です。
Pythonコードでは以下の様に記載してやれば良い
>>> import sys
>>> sys.path.append('追加するパス')
【問題その2】どこのパスを通してやれば良い?
さらに疑問点が二つ、
・「PythonなのにOpenCvでダウンロードしたものがpyファイルではない」
・「Python自体に2.Xと3.X、どちらがBlenderで使用しているものかわからない」
こんな感じで、OpenCvの読み込みをやり始めました。
そんなこんなで、上記の問題点及び疑問点は以下の様に解決しました。
お尻から解決して行きました。
<解決【問題その2】>
「PythonなのにOpenCvでダウンロードしたものがpyファイルではない」に関して
これはダウンロードするものが違ったと言うことでした。
>pip install opencv
上のコマンドが悪かった。。。これはPythonの方ではなかった。。。
>pip install opencv-python
こちらのコマンドが正しい、初めのコマンドだと以下の様にインストールされた
みるからにPythonのインストール後ではない(〜.pyファイルがないため)
そして「おかし〜な〜」なんて思っていましたが案の定間違っていました。
「Python自体に2.Xと3.X、どちらがBlenderで使用しているものかわからない」
そして、こちらのケースはなんとかpipコマンドでインストールしたもののインストールしたものが2.Xの方だったのですがBlenderコンソールから起動しても参照されない。
「なんでだろー」と考えていたら「3.Xなのか?」と疑問に思い。。。案の定。。。
と言うわけで、Blenderで使用しているのは3.Xの方のPythonでした。
そして、ラスボス
【問題その1】BlenderのPythonConsoleにて以下のコードを実行するとエラーが起きる
以下のコードをBlenderから起動した時に
>>import cv2
下の様な感じのエラーメッセージが出ました。
これは、ラズパイでの実行結果の様です。
※エラーログがどこかへ行ってしまい。。。
pi@raspberrypi~$ python cam.py
Traceback (most recent call last)
File "cam.py", line 1, in <module>
import cv2
ImportError: No module named cv2
内容としては次の様なものでした。
「__init__.py の4行目「from cv2 import cv2 ..」 が見当たりません。」
結局のところは以下の点に集約されます。
「pipでインストールした</usr/local/lib/python3.6/site-packages/cv2>
にはcv2.soファイルがないために上記のディレクトリにある__init__.pyからインポートするものがありませんよ。」
実際にインポートするのはsoファイルなのですが、自分のインストールディレクトリには、以下の様なものしかありませんでした。
仕方ないので、それっぽい名前の「cv2.cpython-36m-darwin.so」をリネームしました(笑)。
実行コマンド
>> cp パス/cv2.cpython-36m-darwin.so パス/cv2.so
結果以下の様になりました。
次回は、画像の読み込みからどの様なデータが取得できるのか検証してみようと思います。