#!/usr/bin/perl use strict; our $images_dir = "/home/lens/Desktop/woodtripod/"; our $thumbs_dir = "/home/lens/Desktop/thumbs/randomcrops5k/"; our $count = 5000; mkdir($thumbs_dir); mkdir($thumbs_dir . "A/"); mkdir($thumbs_dir . "B/"); mkdir($thumbs_dir . "A/train/"); mkdir($thumbs_dir . "B/train/"); mkdir($thumbs_dir . "A/val/"); mkdir($thumbs_dir . "B/val/"); mkdir($thumbs_dir . "A/test/"); mkdir($thumbs_dir . "B/test/"); our @files = (); opendir DIR, $images_dir; while (readdir DIR) { next if /^\./; push(@files, $_); } closedir DIR; our @images = sort @files; # assume all images are same size our $w = 1920; our $h = 1080; our $dw = 256; our $dh = 256; my $i; my $x; my $y; my $dir; for ($i = 0; $i < $count; $i++) { my $id = int($i/$count * (scalar @images - 1)); if ( ($id % 7) == 3) { $dir = "test/"; } elsif ( ($id % 7) == 6) { $dir = "val/"; } else { $dir = "train/"; } if ( $i && ($i % 1000) == 0) { print($id . "...\n") } my $x = int(rand($w - $dw)); my $y = int(rand($h - $dh)); my $a_frame = $images_dir . $images[$id]; my $b_frame = $images_dir . $images[$id+1]; my $crop = $dw . "x" . $dh . "+" . $x . "x" . $y; my $fn = sprintf("frame_%04d.png", $i); print "$fn $x $y $a_frame\n"; system("convert", $a_frame, "-crop", $crop, $thumbs_dir . "A/" . $dir . $fn); system("convert", $b_frame, "-crop", $crop, $thumbs_dir . "B/" . $dir . $fn); } print $count . "\n";