Update app.py
Browse files
app.py
CHANGED
@@ -28,25 +28,28 @@ def warp_design(design, mask, warp_scale):
|
|
28 |
h, w = mask.shape[:2]
|
29 |
design_resized = cv2.resize(design, (w, h))
|
30 |
|
31 |
-
# Normalize mask
|
32 |
-
scaled_mask = (mask * 255
|
33 |
|
34 |
-
# Ensure
|
35 |
if len(scaled_mask.shape) == 3 and scaled_mask.shape[2] == 3:
|
36 |
scaled_mask = cv2.cvtColor(scaled_mask, cv2.COLOR_BGR2GRAY)
|
37 |
|
38 |
-
# Resize the mask
|
39 |
if scaled_mask.shape != (h, w):
|
40 |
scaled_mask = cv2.resize(scaled_mask, (w, h), interpolation=cv2.INTER_NEAREST)
|
41 |
|
42 |
-
# Debug: Print shapes
|
43 |
print(f"Design Resized Shape: {design_resized.shape}, Mask Shape: {scaled_mask.shape}")
|
44 |
-
|
45 |
return cv2.bitwise_and(design_resized, design_resized, mask=scaled_mask)
|
46 |
|
47 |
def blend_images(base, overlay, mask):
|
48 |
"""Blends the design onto the dress using seamless cloning."""
|
49 |
center = tuple(np.array(base.shape[:2]) // 2)
|
|
|
|
|
|
|
|
|
|
|
50 |
return cv2.seamlessClone(overlay, base, mask, center, cv2.NORMAL_CLONE)
|
51 |
|
52 |
def apply_design(image_path, design_path, warp_scale):
|
|
|
28 |
h, w = mask.shape[:2]
|
29 |
design_resized = cv2.resize(design, (w, h))
|
30 |
|
31 |
+
# Normalize mask, convert to uint8
|
32 |
+
scaled_mask = (mask * 255).astype(np.uint8)
|
33 |
|
34 |
+
# Ensure single-channel mask
|
35 |
if len(scaled_mask.shape) == 3 and scaled_mask.shape[2] == 3:
|
36 |
scaled_mask = cv2.cvtColor(scaled_mask, cv2.COLOR_BGR2GRAY)
|
37 |
|
38 |
+
# Resize the mask if needed
|
39 |
if scaled_mask.shape != (h, w):
|
40 |
scaled_mask = cv2.resize(scaled_mask, (w, h), interpolation=cv2.INTER_NEAREST)
|
41 |
|
|
|
42 |
print(f"Design Resized Shape: {design_resized.shape}, Mask Shape: {scaled_mask.shape}")
|
|
|
43 |
return cv2.bitwise_and(design_resized, design_resized, mask=scaled_mask)
|
44 |
|
45 |
def blend_images(base, overlay, mask):
|
46 |
"""Blends the design onto the dress using seamless cloning."""
|
47 |
center = tuple(np.array(base.shape[:2]) // 2)
|
48 |
+
|
49 |
+
# Convert mask to uint8
|
50 |
+
if mask.dtype != np.uint8:
|
51 |
+
mask = (mask * 255).astype(np.uint8) # Normalize and convert
|
52 |
+
|
53 |
return cv2.seamlessClone(overlay, base, mask, center, cv2.NORMAL_CLONE)
|
54 |
|
55 |
def apply_design(image_path, design_path, warp_scale):
|