From 18a21d4b07c581a8954b08518115fb035c712b28 Mon Sep 17 00:00:00 2001
From: natanielruiz <nataniel777@hotmail.com>
Date: 星期二, 08 八月 2017 07:34:09 +0800
Subject: [PATCH] Added new correct cropping for training and smoothing for video.

---
 code/datasets.py |   34 ++++++++++++++++++++++++++++++++--
 1 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/code/datasets.py b/code/datasets.py
index 0ab364e..06cd433 100644
--- a/code/datasets.py
+++ b/code/datasets.py
@@ -81,9 +81,24 @@
     def __getitem__(self, index):
         img = Image.open(os.path.join(self.data_dir, self.X_train[index] + self.img_ext))
         img = img.convert('RGB')
+        mat_path = os.path.join(self.data_dir, self.y_train[index] + self.annot_ext)
+
+        # Crop the face
+        pt2d = utils.get_pt2d_from_mat(mat_path)
+        x_min = min(pt2d[0,:])
+        y_min = min(pt2d[1,:])
+        x_max = max(pt2d[0,:])
+        y_max = max(pt2d[1,:])
+
+        k = 0.15
+        x_min -= k * abs(x_max - x_min)
+        y_min -= 4 * k * abs(y_max - y_min)
+        x_max += k * abs(x_max - x_min)
+        y_max += 0.4 * k * abs(y_max - y_min)
+        img = img.crop((int(x_min), int(y_min), int(x_max), int(y_max)))
 
         # We get the pose in radians
-        pose = utils.get_ypr_from_mat(os.path.join(self.data_dir, self.y_train[index] + self.annot_ext))
+        pose = utils.get_ypr_from_mat(mat_path)
         # And convert to degrees.
         pitch = pose[0] * 180 / np.pi
         yaw = pose[1] * 180 / np.pi
@@ -117,9 +132,24 @@
     def __getitem__(self, index):
         img = Image.open(os.path.join(self.data_dir, self.X_train[index] + self.img_ext))
         img = img.convert('RGB')
+        mat_path = os.path.join(self.data_dir, self.y_train[index] + self.annot_ext)
+
+        # Crop the face
+        pt2d = utils.get_pt2d_from_mat(mat_path)
+        x_min = min(pt2d[0,:])
+        y_min = min(pt2d[1,:])
+        x_max = max(pt2d[0,:])
+        y_max = max(pt2d[1,:])
+
+        k = 0.15
+        x_min -= k * abs(x_max - x_min)
+        y_min -= 4 * k * abs(y_max - y_min)
+        x_max += k * abs(x_max - x_min)
+        y_max += 0.4 * k * abs(y_max - y_min)
+        img = img.crop((int(x_min), int(y_min), int(x_max), int(y_max)))
 
         # We get the pose in radians
-        pose = utils.get_ypr_from_mat(os.path.join(self.data_dir, self.y_train[index] + self.annot_ext))
+        pose = utils.get_ypr_from_mat(mat_path)
         # And convert to degrees.
         pitch = pose[0] * 180 / np.pi
         yaw = pose[1] * 180 / np.pi

--
Gitblit v1.8.0