LoginSignup
0
1

More than 1 year has passed since last update.

画像選別を行うUI

Last updated at Posted at 2022-07-27

目的

画像認識の機械学習の教師データ(Webからのスクレイピングで集めたデータ)のうち教師データとして不適切なものを削除するために用いる。
基本手作業で行うのでデータが多いほど効率は悪いからこれ以外の解決法がない場合にのみ使うことを推奨する。

集め方についてはここから↓

環境

  • python=3.6.13
  • opencv=3.4.2
  • pyautogui=0.9.53

コード

import cv2
import os
from tkinter import messagebox
import pyautogui as pag

#自分が使っているモニターの高さを取得
monitor_height = pag.size().height

def img_select(car_path):    
    car_img_list = os.listdir(car_path)
    for car_img in car_img_list:
        img = cv2.imread(car_path+'/'+car_img)
        img_height = img.shape[0]
        #画像の高さがモニターの高さの半分よりも大きかったらモニターの半分の大きさにリサイズ
        if img_height>monitor_height*0.5:
            img = cv2.resize(img, dsize=None, fx=float(monitor_height*0.5/img_height), fy=float(monitor_height*0.5/img_height))

        cv2.imshow("image", img)
        k = cv2.waitKey(0)

        if k==ord('s'):
            os.remove(car_path+'/'+car_img)
            print(car_path+'/'+car_img+"を削除しました")
        elif k == ord("q"):
            ret = messagebox.askyesno('確認', 'このフォルダの処理をスキップしますか?')
            if ret==True:
                print("処理をスキップしました")
                return    

        cv2.destroyWindow("img")
        cv2.waitKey(1)


if __name__=='__main__':
    print("Sキーで削除、Qキーで処理を終わる、それ以外のキーは次の画像に移る")
    folder_path = input("フォルダのパスを入力してください")
    cars_list = os.listdir(folder_path)
    for car in cars_list:
        car_path = folder_path+'/'+car
        img_select(car_path)
        ret = messagebox.askyesno('確認', '処理を終わりますか?')
        if ret==True:
            break
    print('処理を終了しました')

入力フォルダ構造

入力フォルダの構造はこんな感じ

root/
├img1_folder/
│ ├img1.png
│ ├img2.png
│ └img3.png
├img2_folder/
│ ├img1.png
│ ├img2.png
│ └img3.png
:
:
├imgn_folder/
│ ├img1.png
│ ├img2.png
│ └img3.png

操作方法

  • 実行したらフォルダのパスを入力してくださいと指示されるので上記のディレクトリ構造のrootのパスを入力する。
    • Google-images-downloderを使っていたら実行したときに作成されるdownloadsのフォルダのパスを入力
  • rootディレクトリ内のフォルダが上から順にそのディレクトリ内の画像が新しいウィンドウに表示される。
  • Sを押すと表示されている画像が削除される。
  • Qを押すと今いるディレクトリの処理をスキップする。
    • 次の画像ディレクトリに移動する。
  • それ以外のキーを押すと画像が切り替わる
  • 画像がまとまっているディレクトリ(imgn_folder)の中の画像すべて見終わったらプログラムを終了するかを確認するウィンドウが表示される。
    • はいを押したらプログラムが終了する。いいえを押したら次の画像フォルダに移動する。
0
1
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
0
1