cloud-classifier / imageLoader.py
Morsecode's picture
Added files
3602056
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()