Upload reactor_swapper.py
Browse files
custom_nodes/comfyui-reactor-node/scripts/reactor_swapper.py
CHANGED
|
@@ -304,7 +304,9 @@ def run_hyperswap(session, source_face, target_face, target_img):
|
|
| 304 |
|
| 305 |
# Вычисляем аффинную матрицу
|
| 306 |
M = get_affine_transform(target_landmarks_5.astype(np.float32), std_landmarks_256)
|
|
|
|
| 307 |
logger.debug("Affine Matrix M (used for cropping):\n%s", M)
|
|
|
|
| 308 |
|
| 309 |
# Применяем аффинное преобразование с новой матрицей M
|
| 310 |
crop = cv2.warpAffine(target_img, M, (256, 256), flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REFLECT)
|
|
@@ -358,6 +360,7 @@ def run_hyperswap(session, source_face, target_face, target_img):
|
|
| 358 |
# (ваш код без изменений, но без старой денормализации)
|
| 359 |
output = output.transpose(1, 2, 0) # CHW -> HWC
|
| 360 |
output = output[:, :, ::-1] # RGB -> BGR (Убедитесь, что это BGR, если вход был BGR)
|
|
|
|
| 361 |
|
| 362 |
# Визуализация после денормализации
|
| 363 |
#### Что проверить:
|
|
@@ -367,11 +370,8 @@ def run_hyperswap(session, source_face, target_face, target_img):
|
|
| 367 |
# cv2.imshow("Output After Denormalization", output)
|
| 368 |
# cv2.waitKey(1)
|
| 369 |
|
| 370 |
-
# 7. Возвращаем результат 256x256 И матрицу
|
| 371 |
-
|
| 372 |
-
# return result
|
| 373 |
-
|
| 374 |
-
return output, M # Возвращаем лицо (256x256) и матрицу M
|
| 375 |
|
| 376 |
def sort_by_order(face, order: str):
|
| 377 |
if order == "left-right":
|
|
|
|
| 304 |
|
| 305 |
# Вычисляем аффинную матрицу
|
| 306 |
M = get_affine_transform(target_landmarks_5.astype(np.float32), std_landmarks_256)
|
| 307 |
+
M_inv = cv2.invertAffineTransform(M) # Обратная для paste
|
| 308 |
logger.debug("Affine Matrix M (used for cropping):\n%s", M)
|
| 309 |
+
logger.debug("Inverse Affine Matrix M_inv (used for paste):\n%s", M_inv)
|
| 310 |
|
| 311 |
# Применяем аффинное преобразование с новой матрицей M
|
| 312 |
crop = cv2.warpAffine(target_img, M, (256, 256), flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REFLECT)
|
|
|
|
| 360 |
# (ваш код без изменений, но без старой денормализации)
|
| 361 |
output = output.transpose(1, 2, 0) # CHW -> HWC
|
| 362 |
output = output[:, :, ::-1] # RGB -> BGR (Убедитесь, что это BGR, если вход был BGR)
|
| 363 |
+
logger.debug("Output after denormalization: Min: %s | Max: %s", output.min(), output.max())
|
| 364 |
|
| 365 |
# Визуализация после денормализации
|
| 366 |
#### Что проверить:
|
|
|
|
| 370 |
# cv2.imshow("Output After Denormalization", output)
|
| 371 |
# cv2.waitKey(1)
|
| 372 |
|
| 373 |
+
# 7. Возвращаем результат 256x256 И обратную матрицу M_inv
|
| 374 |
+
return output, M_inv
|
|
|
|
|
|
|
|
|
|
| 375 |
|
| 376 |
def sort_by_order(face, order: str):
|
| 377 |
if order == "left-right":
|