Esempio n. 1
0
def create_image_hash(image_dir):
    return {
        image_name:
        f"{get_image_average_hash(image_dir / image_name, 10)}{os.path.splitext(image_name)[-1]}"
        for image_name in os.listdir(image_dir)
        if check_if_approved_image_extension(image_name)
    }
Esempio n. 2
0
def migrate_images(dataset_dir, raw_dir, image_hash):
    image_dir = dataset_dir / "images"
    mkdir_safely(image_dir)
    for image_origin in os.listdir(raw_dir):
        if check_if_approved_image_extension(image_origin):
            image_path = dataset_dir / "images" / image_hash[image_origin]
            if not os.path.isfile(image_path):
                copyfile(raw_dir / image_origin, image_path)
Esempio n. 3
0
def migrate_images(dataset_dir, raw_dir, image_hash):
    image_dir = dataset_dir / "images"
    mkdir_safely(image_dir)
    for image_name_origin in os.listdir(raw_dir):
        if check_if_approved_image_extension(image_name_origin):
            image_path = dataset_dir / "images" / image_hash[image_name_origin]
            if not os.path.isfile(image_path):
                image_origin = Image.open(raw_dir / image_name_origin)
                image_without_exif = Image.new(image_origin.mode, image_origin.size)
                image_without_exif.putdata(image_origin.getdata())
                image_without_exif.save(image_path)
Esempio n. 4
0
def thumbnailing(thumbnails_dir, repository_dir, THUMBNAIL_SIZE=(300, 300)):
    for dirpath, dirnames, filenames in os.walk(repository_dir):
        for filename in filenames:
            if check_if_approved_image_extension(filename):
                image_path = thumbnails_dir / filename[:2] / filename
                if not image_path.is_file():
                    image = Image.open(f"{dirpath}/{filename}")
                    if check_if_approved_image_format(image.format):
                        image.thumbnail(THUMBNAIL_SIZE)
                        if filename[:2] not in os.listdir(thumbnails_dir):
                            os.mkdir(thumbnails_dir / filename[:2])
                        image.save(image_path)
def thumbnailing(thumbnails_dir,
                 repository_dir,
                 weedcoco_path,
                 THUMBNAIL_SIZE=(300, 300)):
    with open(weedcoco_path) as f:
        coco = json.load(f)
    denormalise_weedcoco(coco)
    coco_by_filename = {
        os.path.basename(image["file_name"]): image
        for image in coco["images"]
    }

    for dirpath, dirnames, filenames in os.walk(repository_dir):
        for filename in filenames:
            if not check_if_approved_image_extension(filename):
                # XXX: should this raise an error?
                continue
            thumbnail_one(
                coco_by_filename[filename],
                f"{dirpath}/{filename}",
                thumbnails_dir,
                thumbnail_size=THUMBNAIL_SIZE,
            )
Esempio n. 6
0
import argparse
import pathlib
import os
import scipy.spatial
import PIL.Image
import seaborn as sns
import matplotlib.pyplot as plt
from weedcoco.utils import check_if_approved_image_extension


sns.set_theme(color_codes=True)

ap = argparse.ArgumentParser(description=__doc__)
ap.add_argument("--dataset-dir", required=True, type=pathlib.Path)
args = ap.parse_args()

X = np.asarray(
    [
        imagehash.average_hash(
            PIL.Image.open(f"{dirpath}/{filename}"), hash_size=16
        ).hash.flatten()
        for dirpath, dirnames, filenames in os.walk(args.dataset_dir)
        if os.path.basename(dirpath) == "img"
        for filename in filenames
        if check_if_approved_image_extension(filename)
    ]
)
distances = scipy.spatial.distance.pdist(X, metric="hamming")
g = sns.displot(distances)
plt.show()