Takunojiのプログラミング・プレイグラウンド(遊び場)

Javaプログラミングを基本にして、ゲーム作成に必要なことの調査結果、やったら面白そうなことなどを記載します。プログラミングのススメ的なことも記載します。プログラミングで楽しく遊ぶために色々と記載して行きます。

Blender Python + OpenCV〜画像読み込み〜

前回は、OpenCvPython版?(opencv-python)のインストール及び参照追加のための
各種設定などを行いました。

今回は、OpenCvで読み込んだ
イメージファイルの情報をコンソールに表示
します。
前提として、前回のOpenCv-Pythonをインストールしている必要があります。

でわでわ

いつも通りにBlenderを立ち上げます。
ここで言う「いつも通り」とは、以下の手順です。
1.Mac: ターミナル、Win: コマンドプロンプト、を立ち上げてBlenderを起動する
2.Blenderの画面上に「テキストエディタ」「パイソンコンソール」を表示

コードとか記載済みですが、以下の様なイメージです。

f:id:Takunoji:20180211114521p:plain

そして、前回インストールした「cv2」をインポートします。
import sys
sys.path.append('cv2をインストールしたディレクトリ') # soファイル名に注意
import cv2


適当なイメージファイル(PNG, JPG, JPEGなど)をロード(読み込み)します。
image = cv2.imread('../imgs/Dojo.png') # ここのパスは変更してください

サンプルコードには、os.getcwd()を使用しています。
→現在参照しているディレクトリを取得するメソッドです。

そして、読み込んだイメージファイルから各値(プロパティ)を取得します。
結局は読み込んだイメージオブジェクトのshapeプロパティを表示するだけですが
それぞれ、高さ、幅、チャネル数を示します。
※チャネル数に関してはよくわかりませんでした。

ソースは以下の様になります。
height, width, channels = image.shape[:3]

最後の「:3」はタプルの要素を指定するコードの様です。
そして、表示結果が以下の様になります。

f:id:Takunoji:20180211121931p:plain

ちょっとつまらない感じですが、これから面白くなる予定です。

ソースコードは以下になります。
※リンクからGitへ飛び、ダウンロードできます。
20180211_A.py ------------------------------------------

import os
import sys
sys.path.append('/usr/local/lib/python3.6/site-packages/cv2/')

import cv2

# this is Normal Loading
#image = cv2.imread(os.getcwd() + '/BlenderPython/img/Dojo.png')

# this is GrayScale Loading
image = cv2.imread(os.getcwd() + '/BlenderPython/img/Dojo.png', cv2.IMREAD_GRAYSCALE)

width = 0
height = 0
channels = 0

print(image.shape)

if image is None:
print("File is None!")
sys.exit(1)

if len(image.shape) == 3:
height, width, channels = image.shape[:3]
else:
height, width = image.shape[:2]
channels = 1

print("width; %d" % width)
print("height; %d" % height)
print("channels; %d" % channels)
print("dtype;" + str(image.dtype))

-----------------------------------------------------

こんな感じになります。
さて、次回は、どこから手をつけようか?
とりあえずは、OpenCvを使いたいので以下のサイトを参照しようと思います。

OpenCV.jp : OpenCV逆引きリファレンス — OpenCV-CookBook