summaryrefslogtreecommitdiff
path: root/scripts/builders/dataset-random-skip.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/builders/dataset-random-skip.pl')
-rwxr-xr-xscripts/builders/dataset-random-skip.pl64
1 files changed, 64 insertions, 0 deletions
diff --git a/scripts/builders/dataset-random-skip.pl b/scripts/builders/dataset-random-skip.pl
new file mode 100755
index 0000000..bc59723
--- /dev/null
+++ b/scripts/builders/dataset-random-skip.pl
@@ -0,0 +1,64 @@
+#!/usr/bin/perl
+
+use strict;
+
+our $dt = 4;
+our $count = 30000;
+
+our $images_dir = "woodtripod/";
+our $thumbs_dir = "thumbs/randomcrops_" . $count . "_" . $dt . "/";
+
+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 - $dt));
+ 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+$dt];
+ 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";
+