■はじめに
データセットを作成していない人は、こちらを参照してデータセットを作成しておいてください。
■手順
プロジェクトの構成は以下です。
- Project # プロジェクトの一番親のディレクトリ
ソースコードの全量は以下です。(「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」の場合は全く同じということです。)