Ich habe ein grundlegendes Problem: Ich kann nicht mehrere Dateien in einem Ordner löschen. Wie Sie unten sehen können, mache ich zuerst einige Überprüfungen (gib src, überprüfe, ob die Datei existiert, drucke Breite und Höhe und dann den Pixelbereich).Löschen mehrerer Bilder (os.remove) mit Python
Ich möchte alle JPG-Dateien löschen, die den gegebenen Pixelbereich kleiner als einen Wert haben, den ich gebe. Der Code wird ausgeführt, keine Fehler, aber die Datei ist immer noch da. Mit einer einzigen Datei (also mit vollem Pfad angegeben ..) funktioniert es, mit mehreren (wie in meiner Frage) nicht.
import numpy as np
import cv2
import os
from datetime import datetime
now = datetime.now()
id_folder = now.strftime('%Y%m%d-%H%M%S-%f')
src = ('C:\\Users\\User\\Desktop\\folder\\folder1\\area1\\')
files = os.listdir(src)
img = cv2.imread(src + str(files[0]), 0)
print(img)
height = np.size(img, 0)
width = np.size(img, 1)
print(height, width)
pixel_area = height*width
print(pixel_area)
for image_file_name in os.listdir('C:\\Users\\User\\Desktop\\folder\\folder1\\area1\\'):
if image_file_name.endswith(".jpg") and pixel_area <= 140:
os.remove('C:\\Users\\User\\Desktop\\folder\\folder1\\area1\\' + image_file_name)
Im Ordner befinden sich mehrere Bilder mit unterschiedlichen Bereichen. Was ich möchte, ist nur einige von ihnen zu löschen, nur das, was eine niedrigere Breite * Höhe als ein Wert, den ich gebe. Hier
ist ein Beispiel
Ich mag die Bilder in dem roten Rechteck löschen und dass in grün zu halten, gerade wegen ihrer Pixelfläche (kann ich sagen, Seitenverhältnis?) Ist größer.
Sind Sie sicher, dass Sie den Pixelbereich nicht für jede Datei überprüfen möchten? Ihr aktueller Code behandelt nur die erste Datei, und der 'pixel_area' bleibt für alle Dateien unabhängig vom Dateinamen konstant. –
Ihr Code betrachtet die Bilder nicht, um ihre Größe zu ermitteln. Für alle Bilder wird der gleiche Wert verwendet. Sie müssen jede Datei öffnen, um ihre Größe zu bestimmen. – holdenweb
Sie richtig Leute. Ich habe vergessen zu sagen (jetzt aktualisieren ...), dass in dem Ordner mehrere Bilder mit verschiedenen Bereichen sind. Was ich möchte, ist nur einige von ihnen zu löschen, nur das, was eine niedrigere Breite * Höhe als ein Wert, den ich gebe. – Link