3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Python OpenCVで、複数の画像に対して画像一致を判定して、判定結果をCSVにまとめてみた

Last updated at Posted at 2019-05-05

背景

複数の画像の中から、ある人物が写っている画像を見つけたい!
ということで、
複数の画像に対して、ある画像が一致する箇所があるかを検出して、
判定結果をCSVにまとめてみました。

環境

MacOS Mojave ver10.14.4
Anaconda Navigator 1.9.7
 ※Anacondaのインストールは、こちらを参考に
JupiterNotebook 5.4.0
OpenCV 3.4.2
※OpenCVのインストールは以前の記事を参照ください

手順

方針

・検索対象の画像をフォルダから読み込む
・画像の一致検索をかけ、判定結果を配列に格納
・配列をCSVに保存

実装

まずは、各種ライブラリをインポート
cv2:OpenCVを使用するため
glob:フォルダ内のファイルを取得するため
os:ファイルぱすからファイル名を取得するため
csv:csvに保存するため

import cv2
import glob
import os
import csv

判定結果を返す関数を設定する(1:一致あり、0:一致なし)

def Push_Stamp(num):
    if 0.99 < num:
        return 1
    else:
        return 0

フォルダの中のファイルを取得する
今回は以下の3つのファイルが検索対象としました


files =glob.glob("./ImagesFolder/temp/*") #検索画像保管フォルダパスを指定

スクリーンショット 2019-05-05 23.40.43.png

imreadで検出したい画像を読み込み


template = cv2.imread('./imagesFolder/temp_template/ipou.jpeg')

判定結果を格納する空配列を用意する


wrcsv = []

画像の一致判定を行って、判定結果をCSVに書き込む(繰り返し処理)


for fname in files:
    # 検索対象画像の読み込み
    image = cv2.imread(fname)
    # 画像マッチング処理
    result = cv2.matchTemplate(image, template, cv2.TM_CCORR_NORMED)
    # 最も類似度が高い位置を取得する。
    minVal, maxVal, minLoc, maxLoc = cv2.minMaxLoc(result)
    # 類似度から、判定結果を求める(上で設定した式を使用)
    Judg = Push_Stamp(maxVal)
    # ファイルパスから、ファイル名と拡張子を取得
    filename, ext = os.path.splitext( os.path.basename(fname) )
    # CSVに書き込み
    wrcsv.append([filename,Judg])

判定結果の配列をCSVに保存

with open('./imagesFolder/Output/c01.csv', "w") as f: # 文字コードをShift_JISに指定
    writer2 = csv.writer(f, lineterminator="\n") # writerオブジェクトの作成 改行記号で行を区切る
    writer2.writerows(wrcsv) # csvファイルに書き込み

実行結果

スクリーンショット 2019-05-05 23.35.43.png

終わりに

これで、一致しているかどうかをCSVでまとめて見ることができるようになりました!

参考

「初心者がpython Anaconda GUIで、簡単にOpenCVをインストールしてみる」
 https://qiita.com/anzanshi/items/a88df7db49f77f65fbbf
「Python OpenCVで画像の一部が一致しているか、判定結果を返してみた」
 https://qiita.com/anzanshi/items/82fc4c7a3a1f84137aef

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?