■はじめに
PythonとOpenCVの環境構築は、こちらを参照してください。
■手順
プロジェクトの構成は以下です。
- Project # プロジェクトの一番親のディレクトリ
ソースコードの全量は以下です。(「DATADIR」のパスはProjectのディレクトリパスを記載してください)
※実行する前に、「Dog」ディレクトリに「犬の画像」、「Cat」ディレクトリに「猫の画像」を格納しておいてください。(画像サイズは問わないので、適当にGoogleから取得するなど。)
import os
import cv2
import random
import numpy
# ディレクトリパスの定義
DATADIR = "/Users/user/Desktop/Project/"
# ディレクトリ名の定義
CATEGORIES = ["Dog", "Cat"]
# 画像のサイズ定義
IMG_SIZE = 50
training_data = []
def create_training_data():
for class_num, category in enumerate(CATEGORIES):
path = os.path.join(DATADIR, category)
for image_name in os.listdir(path):
try:
img_array = cv2.imread(os.path.join(path, image_name),) # 画像読み込み
img_resize_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE)) # 画像のリサイズ
training_data.append([img_resize_array, class_num]) # 画像データ、ラベル情報を追加
except Exception as e:
pass
create_training_data()
random.shuffle(training_data) # データをシャッフル
X_train = [] # 画像データ
y_train = [] # ラベル情報
z_train = [] # カテゴリ情報
# データセット作成
for feature, label in training_data:
X_train.append(feature)
y_train.append(label)
z_train.append(CATEGORIES[label])
# データセットの保存
numpy.savez('./filename.npz', type=z_train,trainimg=X_train, trainlabel=y_train, imgsize=(IMG_SIZE, IMG_SIZE))
上記のPythonファイルを以下のコマンドを実行することでデータセットを作成できます。
# Pythonファイルが格納されているディレクトリをルートに
cd /Users/user/Desktop/Project/
# Pythonファイルの実行
python learning.py
これで、「Project」ディレクトリ直下に「filename.npz」が生成されていると思います。
このファイルがデータセットのバイナリファイルです。
以降は、このファイルを元に、画像分類などを行います。