오른쪽 클릭과 왼쪽 클릭으로 이미지를 지정 폴더로 이동해 보았습니다.

소개



편하게 화상을 분류할 수 있으면-라고 생각하면서 만들었습니다.

만든 것



오른쪽 클릭과 왼쪽 클릭으로 이미지를 지정 폴더로 이동시키는 프로그램을 만들었습니다.



이미지는 카나가와 공과 대학의 표준 이미지 데이터베이스 SIDBA에서 다운로드했습니다.


프로그램을 실행하면 5장의 화상이 표시됩니다.


지구의 이미지를 클릭했습니다. 창이 업데이트됩니다.



클릭 한 지구의 이미지가 이동되었습니다. 이번에는 왼쪽 클릭이므로 L 폴더에 출력됩니다.



코드



imageMover.py
import cv2
import glob
import shutil
import os
import numpy as np

#画像のサイズは200pxで統一
size = (200, 200)  

name = []   #ファイル名
data = []   #ファイルのデータ
coordinates = []    #クリック時の座標

#移動先のフォルダを作成。LとRがそれぞれ左クリックと右クリックに対応。
os.makedirs('./L', exist_ok=True)
os.makedirs('./R', exist_ok=True)

#ファイルの読み込み
for file in glob.glob('*.bmp'):
    img = cv2.imread(file)
    img = cv2.resize(img, size) 
    name.append(file) 
    data.append(img)

#マウスクリック時に実行される関数
def click_event(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        coordinates[0:3] = [x, y, 'L']
    if event == cv2.EVENT_RBUTTONDOWN:
        coordinates[0:3] = [x, y, 'R']

#画像の枚数
hasWindow = len(data)

#画像の残り枚数が1枚以上の場合に実行
while hasWindow > 0:
    img = cv2.hconcat(data[:5])

    while(1):
        cv2.imshow('img', img)
        cv2.setMouseCallback("img", click_event) #クリック時

        #クリック時の座標を取得し、対応する画像を移動
        if len(coordinates) != 0:
            n = coordinates[0]//200
            shutil.move(name[n], coordinates[2]+'/'+name[n])
            print(F'フォルダ {coordinates[2]}{name[n]} を移動しました')
            data.pop(n)
            name.pop(n)
            coordinates = []
            hasWindow -= 1 #画像の残り枚数を更新
            break

        #座標を初期化
        coordinates = []    

        #キー入力があるか
        key = cv2.waitKey(100) & 0xff

        #キーボードかxが押されたらウィンドウを閉じる
        if key != 255 or cv2.getWindowProperty('img', cv2.WND_PROP_AUTOSIZE) == -1:
            cv2.destroyAllWindows()
            exit()

Github에도 업로드하고 있습니다.

결론



수동이 빠르지 않습니까?

결론



화상의 표시수를 늘리면서 더 궁리할 수 있을 것 같네요.

마지막까지 보아 주셔서 감사합니다. 지적 · 코멘트를 기다리고 있습니다.

좋은 웹페이지 즐겨찾기