Vision utils

Some utils function to quickly download a bunch of images, check them and pre-resize them

source

download_images


def download_images(
    dest, url_file:NoneType=None, urls:NoneType=None, max_pics:int=1000, n_workers:int=8, timeout:int=4,
    preserve_filename:bool=False
):

Download images listed in text file url_file to path dest, at most max_pics


source

resize_to


def resize_to(
    img, targ_sz, use_min:bool=False
):

Size to resize to, to hit targ_sz at same aspect ratio, in PIL coords (i.e wh)*

class _FakeImg():
    def __init__(self, size): self.size=size

img = _FakeImg((200,500))
test_eq(resize_to(img, 400), [160,400])
test_eq(resize_to(img, 400, use_min=True), [400,1000])

source

verify_image


def verify_image(
    fn
):

Confirm that fn can be opened


source

verify_images


def verify_images(
    fns
):

Find images in fns that can’t be opened


source

resize_image


def resize_image(
    file, dest, src:str='.', max_size:NoneType=None, n_channels:int=3, ext:NoneType=None, img_format:NoneType=None,
    resample:Resampling=<Resampling.BILINEAR: 2>, resume:bool=False, kwargs:VAR_KEYWORD
):

Resize file to dest to max_size

file = 'puppy.jpg'
dest = Path('.')
resize_image(file, dest, src='images', max_size=400)
im = Image.open(dest/file)
test_eq(im.shape[1],400)
(dest/file).unlink()
file = 'puppy.jpg'
dest = Path('images')
resize_image(file, dest, src=dest, max_size=None)

source

resize_images


def resize_images(
    path, max_workers:int=4, max_size:NoneType=None, recurse:bool=False, dest:PosixPath=Path('.'), n_channels:int=3,
    ext:NoneType=None, img_format:NoneType=None, resample:Resampling=<Resampling.BILINEAR: 2>, resume:NoneType=None,
    kwargs:VAR_KEYWORD
):

Resize files on path recursively to dest to max_size

with tempfile.TemporaryDirectory() as d:
    dest = Path(d)/'resized_images'
    resize_images('images', max_size=100, dest=dest, max_workers=0, recurse=True)