ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【Blender/OpenCV】BlenderでOpenCVを使えるようにする

 今回はタイトルにあるようにBlenderOpenCVを使えるようにする方法の備忘録です。
 別にBlenderOpenCVを使う必要はないかもしれませんが、調べてやってみたらできたので残しておきます。

 以前の記事でやったOpenCVのインストールまで終わっているという前提で進めていきます。
rikoubou.hatenablog.com

 では始めます。


1:OpenCVのインストール先を確認する
 ターミナルを起動し「python」と入力してpythonを立ち上げます。
 pythonを立ち上げたら以下のコマンドを入力してOpenCVのインストールパスを確認します。

import cv2
cv2

 実行すると以下のようになるので、表示される「.../cv2/」までのパス(赤線部分)をコピーしておきます。
f:id:rikoubou:20181106134550p:plain


2:Blenderを起動させてOpenCVを読み込ませる
 1でOpenCVのパスを確認できたらBlenderを起動させ、Scripting画面に切り替えます。
f:id:rikoubou:20181106134848p:plain
f:id:rikoubou:20181106134924p:plain

 下半分の黒い画面がpythonの入力ができるコンソール画面になっているので、ここにpythonのコードを入力してOpenCVを使えるようにします。

 Blenderでは外部のライブラリの読み込みは自動で行ってくれないので、手動で設定してやる必要があります。
 pythonでの外部ライブラリの読み込みは以下のように記述します。

import sys
sys.path.append("[ライブラリのパス]")

 なのでOpenCVを使うには上記のコードをBlenderのコンソール画面に入力していきます。

 一行ずつ入力して行きエラーが発生しなければ以下のように「import cv2」をすることでBlenderOpenCVを扱えるようになります。
f:id:rikoubou:20181106140151p:plain


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__

 ターミナルから起動するpythonBlenderでバージョンをそれぞれ確認します。
f:id:rikoubou:20181106141622p:plainf:id:rikoubou:20181106141543p:plain

 ここの例ではバージョンが1.15系として合っていますが、違っている場合は以下の方法で両方のnumpyを最新にします。

・ターミナルから起動するnumpyのアップグレード
 pipでインストールしているので、以下のコマンドを入力してnumpyをアップグレードさせます。

$ pip install numpy --upgrade

Blenderのnumpyアップグレード
 以下のリンクにある「Official」のマークが付いている最近のBlenderをダウンロードしてインストールします。

 両方とも最新にするとnumpyのバージョンが合うようになるはずなので、もう一度同じようにライブラリをappendさせてから「import cv2」をするとエラーが解消されます。


 以上がBlenderOpenCVを使えるようにする方法です。
 まだOpenCV自体何もわかっていないので、組み合わせて何か面白いものを作れるようになりたいです。


・参考資料