今回はタイトルにあるようにBlenderでOpenCVを使えるようにする方法の備忘録です。
別にBlenderでOpenCVを使う必要はないかもしれませんが、調べてやってみたらできたので残しておきます。
以前の記事でやったOpenCVのインストールまで終わっているという前提で進めていきます。
rikoubou.hatenablog.com
では始めます。
1:OpenCVのインストール先を確認する
ターミナルを起動し「python」と入力してpythonを立ち上げます。
pythonを立ち上げたら以下のコマンドを入力してOpenCVのインストールパスを確認します。
import cv2 cv2
実行すると以下のようになるので、表示される「.../cv2/」までのパス(赤線部分)をコピーしておきます。
2:Blenderを起動させてOpenCVを読み込ませる
1でOpenCVのパスを確認できたらBlenderを起動させ、Scripting画面に切り替えます。
下半分の黒い画面がpythonの入力ができるコンソール画面になっているので、ここにpythonのコードを入力してOpenCVを使えるようにします。
Blenderでは外部のライブラリの読み込みは自動で行ってくれないので、手動で設定してやる必要があります。
pythonでの外部ライブラリの読み込みは以下のように記述します。
import sys
sys.path.append("[ライブラリのパス]")
なのでOpenCVを使うには上記のコードをBlenderのコンソール画面に入力していきます。
一行ずつ入力して行きエラーが発生しなければ以下のように「import cv2」をすることでBlenderでOpenCVを扱えるようになります。
3:「import cv2」の実行でエラーが出る時の対処法
sys.path.appendをした後の「import cv2」でエラーが出ることがあります。
- パスが間違っている場合
以下のようなエラーが出る場合があります。
import cv2 Traceback (most recent call last): File "<blender_console>", line 1, in <module> ModuleNotFoundError: No module named 'cv2'
この場合はライブラリまでのパスが間違っている可能性が高いので、もう一度ライブラリのパスを確認してください。
- numpyのバージョンが合っていない場合
以下のようなエラーが出る場合があります。
import cv2 RuntimeError: module compiled against api version 0xc but this version of numpy is 0xa (色々と続く...)
この場合はOpenCVのnumpyとBlenderのnumpyのバージョンが合ってない時に起こるエラーです。
対処するには以下のコマンドで「ターミナルから起動するpythonでのnumpyのバージョン」と「Blenderでのnumpyのバージョン」を確認してください。
import numpy numpy.__version__
ターミナルから起動するpythonとBlenderでバージョンをそれぞれ確認します。
ここの例ではバージョンが1.15系として合っていますが、違っている場合は以下の方法で両方のnumpyを最新にします。
・ターミナルから起動するnumpyのアップグレード
pipでインストールしているので、以下のコマンドを入力してnumpyをアップグレードさせます。
$ pip install numpy --upgrade
・Blenderのnumpyアップグレード
以下のリンクにある「Official」のマークが付いている最近のBlenderをダウンロードしてインストールします。
両方とも最新にするとnumpyのバージョンが合うようになるはずなので、もう一度同じようにライブラリをappendさせてから「import cv2」をするとエラーが解消されます。
以上がBlenderでOpenCVを使えるようにする方法です。
まだOpenCV自体何もわかっていないので、組み合わせて何か面白いものを作れるようになりたいです。
・参考資料