技術ブログ

プログラミング、IT関連の記事中心

OpenCVを使用して、データセットを作成する方法【Python】

■はじめに

PythonOpenCVの環境構築は、こちらを参照してください。

■手順

プロジェクトの構成は以下です。

ソースコードの全量は以下です。(「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」が生成されていると思います。

このファイルがデータセットのバイナリファイルです。

以降は、このファイルを元に、画像分類などを行います。