Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -116,13 +116,23 @@ def calculate_delaunay_triangles(rect, points):
|
|
116 |
def warp_triangle(img1,img2,t1,t2):
|
117 |
if len(t1)!=3 or len(t2)!=3:
|
118 |
return
|
119 |
-
r1=cv2.boundingRect(np.float32([t1]))
|
120 |
-
|
|
|
|
|
121 |
return
|
|
|
|
|
|
|
|
|
|
|
122 |
t1r=[(t1[i][0]-r1[0],t1[i][1]-r1[1]) for i in range(3)]
|
123 |
t2r=[(t2[i][0]-r2[0],t2[i][1]-r2[1]) for i in range(3)]
|
|
|
124 |
mask=np.zeros((r2[3],r2[2],3),dtype=np.float32)
|
|
|
125 |
cv2.fillConvexPoly(mask,np.int32(t2r),(1,1,1),16)
|
|
|
126 |
src=img1[r1[1]:r1[1]+r1[3],r1[0]:r1[0]+r1[2]]
|
127 |
M=cv2.getAffineTransform(np.float32(t1r),np.float32(t2r))
|
128 |
warped=cv2.warpAffine(src,M,(r2[2],r2[3]),flags=cv2.INTER_LINEAR,borderMode=cv2.BORDER_REFLECT_101)
|
|
|
116 |
def warp_triangle(img1,img2,t1,t2):
|
117 |
if len(t1)!=3 or len(t2)!=3:
|
118 |
return
|
119 |
+
r1=cv2.boundingRect(np.float32([t1]))
|
120 |
+
r2=cv2.boundingRect(np.float32([t2]))
|
121 |
+
|
122 |
+
if r1[2] <= 0 or r1[3] <= 0 or r2[2] <= 0 or r2[3] <= 0:
|
123 |
return
|
124 |
+
|
125 |
+
img1_rect = img1[r1[1]:r1[1]+r1[3], r1[0]:r1[0]+r1[2]]
|
126 |
+
if img1_rect.size == 0:
|
127 |
+
return
|
128 |
+
|
129 |
t1r=[(t1[i][0]-r1[0],t1[i][1]-r1[1]) for i in range(3)]
|
130 |
t2r=[(t2[i][0]-r2[0],t2[i][1]-r2[1]) for i in range(3)]
|
131 |
+
|
132 |
mask=np.zeros((r2[3],r2[2],3),dtype=np.float32)
|
133 |
+
|
134 |
cv2.fillConvexPoly(mask,np.int32(t2r),(1,1,1),16)
|
135 |
+
|
136 |
src=img1[r1[1]:r1[1]+r1[3],r1[0]:r1[0]+r1[2]]
|
137 |
M=cv2.getAffineTransform(np.float32(t1r),np.float32(t2r))
|
138 |
warped=cv2.warpAffine(src,M,(r2[2],r2[3]),flags=cv2.INTER_LINEAR,borderMode=cv2.BORDER_REFLECT_101)
|