import os import random from fastdownload import download_url from duckduckgo_search import ddg_images from fastcore.all import * from fastai.vision.all import * def search_images(term, max_images=30): print(f"Searching for '{term}'") return L(ddg_images(term, max_results=max_images)).itemgot('image') def download_images(term, folder, num_images): # Erstelle den Ordner, falls er nicht existiert if not os.path.exists(folder): os.makedirs(folder) # Suche nach den Bild-URLs urls = search_images(term, max_images=num_images) # Lade jedes Bild herunter und speichere es im Ordner for i, url in enumerate(urls): filename = f"{i+1:04}.jpg" dest = os.path.join(folder, filename) try: download_url(url, dest, show_progress=False) print(f"Downloaded image {i+1}/{num_images} to {dest}") except Exception: print(f"Error trying to load Image {urls[i]}, trying next...") print(f"Downloaded {num_images} images to folder {folder}.") def cleanup_images(): for path, subdirs, files in os.walk('data'): for directory in subdirs: path = Path(directory) failed = verify_images(get_image_files(path)) failed.map(Path.unlink) print("Number of images in folder '",path,"' failed: ",len(failed)) def prepare_images(): for path, subdirs, files in os.walk('data'): for directory in subdirs: print("Resizing images in dir: ",directory) resize_images(directory, max_size=500, dest=directory) # Beispielaufruf search_term = 'cumulonimbus cloud' folder_name = 'cumulonimbus' num_images = 250 download_images(search_term, folder_name, num_images) prepare_images() cleanup_images()