技術ブログ

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

OpenCVを使用して画像を分類する方法【Python】

■はじめに

データセットを作成していない人は、こちらを参照してデータセットを作成しておいてください。

■手順

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

ソースコードの全量は以下です。(「TARGET_FILE」の画像名は、チェックしたい画像名に変更してください。)

import cv2
import numpy

sam = numpy.load('./filename.npz')

labelList = sam['trainlabel']


TARGET_FILE = './Check/check.png'
IMG_SIZE = (50, 50)

target_img = cv2.imread(TARGET_FILE)
target_img = cv2.resize(target_img, IMG_SIZE)
target_hist = cv2.calcHist([target_img], [0], None, [256], [0, 256])

for i in range(0, len(labelList)):
    comparing_img = sam['trainimg'][i]
    comparing_img = cv2.resize(comparing_img, IMG_SIZE)
    comparing_hist = cv2.calcHist([comparing_img], [0], None, [256], [0, 256])

    ret = cv2.compareHist(target_hist, comparing_hist, 0)
    print(sam['type'][i], sam['trainlabel'][i], ret)

ターミナルで以下のコマンドを実行することで、画像の分類が行えます。

python match.py

値が「1」に近いほど類似した画像という結果になります。(「1」の場合は全く同じということです。)