Je l'ai fait en pensant que je devrais pouvoir classer facilement les images.
J'ai créé un programme pour déplacer des images vers un dossier spécifié par un clic droit et un clic gauche.
L'image a été téléchargée à partir de la base de données d'images standard SIDBA de l'Institut de technologie de Kanagawa.
Lorsque vous exécutez le programme, 5 images seront affichées.
J'ai cliqué sur l'image de la terre. La fenêtre sera mise à jour.
L'image cliquée de la terre a été déplacée. Puisqu'il s'agissait d'un clic gauche cette fois, il est sorti dans le dossier L.
imageMover.py
import cv2
import glob
import shutil
import os
import numpy as np
#La taille de l'image est unifiée à 200 pixels
size = (200, 200)
name = [] #nom de fichier
data = [] #Données de fichier
coordinates = [] #Coordonnées lorsque vous cliquez dessus
#Créez un dossier de destination. L et R correspondent respectivement au clic gauche et au clic droit.
os.makedirs('./L', exist_ok=True)
os.makedirs('./R', exist_ok=True)
#Lire le fichier
for file in glob.glob('*.bmp'):
img = cv2.imread(file)
img = cv2.resize(img, size)
name.append(file)
data.append(img)
#Fonction exécutée lorsque la souris est cliquée
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']
#Nombre d'images
hasWindow = len(data)
#Exécuter lorsque le nombre d'images restantes est égal ou supérieur à 1
while hasWindow > 0:
img = cv2.hconcat(data[:5])
while(1):
cv2.imshow('img', img)
cv2.setMouseCallback("img", click_event) #Lorsque cliqué
#Obtenez les coordonnées lorsque vous cliquez dessus et déplacez l'image correspondante
if len(coordinates) != 0:
n = coordinates[0]//200
shutil.move(name[n], coordinates[2]+'/'+name[n])
print(F'dossier{coordinates[2]}À{name[n]}Déplacé')
data.pop(n)
name.pop(n)
coordinates = []
hasWindow -= 1 #Mettre à jour le nombre d'images restant
break
#Initialiser les coordonnées
coordinates = []
#Y a-t-il une entrée clé
key = cv2.waitKey(100) & 0xff
#Fermer la fenêtre lorsque vous appuyez sur le clavier ou x
if key != 255 or cv2.getWindowProperty('img', cv2.WND_PROP_AUTOSIZE) == -1:
cv2.destroyAllWindows()
exit()
Il est également téléchargé sur Github.
Le manuel n'est-il pas plus rapide?
Il semble que vous puissiez concevoir plus en augmentant le nombre d'images affichées.
Merci d'avoir regardé jusqu'à la fin. Nous attendons vos suggestions et commentaires avec impatience.
Recommended Posts