Update app.py
Browse files
app.py
CHANGED
|
@@ -102,39 +102,28 @@ def realizar_ela(imagen):
|
|
| 102 |
img_np = np.array(imagen.convert("RGB"))
|
| 103 |
img_cv = cv2.cvtColor(img_np, cv2.COLOR_RGB2BGR)
|
| 104 |
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
error_scale = 57
|
| 108 |
-
brightness_pct = 100
|
| 109 |
-
equalize_histogram = False
|
| 110 |
-
|
| 111 |
temp_path = "/tmp/temp_image.jpg"
|
| 112 |
cv2.imwrite(temp_path, img_cv, [cv2.IMWRITE_JPEG_QUALITY, quality])
|
| 113 |
img_comprimida = cv2.imread(temp_path)
|
| 114 |
if img_comprimida is None:
|
| 115 |
raise ValueError("No se pudo leer la imagen comprimida.")
|
| 116 |
|
|
|
|
| 117 |
diferencia = cv2.absdiff(img_cv.astype(np.float32), img_comprimida.astype(np.float32))
|
| 118 |
-
scaled_diff = diferencia *
|
| 119 |
-
scaled_diff = np.clip(scaled_diff, 0, 255).astype(np.uint8)
|
| 120 |
|
|
|
|
| 121 |
gray_diff = cv2.cvtColor(scaled_diff, cv2.COLOR_BGR2GRAY)
|
| 122 |
-
_, mask = cv2.threshold(gray_diff,
|
| 123 |
-
mask = mask.astype(np.uint8)
|
| 124 |
-
|
| 125 |
-
if equalize_histogram:
|
| 126 |
-
gray = cv2.cvtColor(scaled_diff, cv2.COLOR_BGR2GRAY)
|
| 127 |
-
gray_eq = cv2.equalizeHist(gray)
|
| 128 |
-
scaled_diff = cv2.cvtColor(gray_eq, cv2.COLOR_GRAY2BGR)
|
| 129 |
|
| 130 |
-
|
| 131 |
-
|
| 132 |
|
| 133 |
-
|
| 134 |
img_gray = cv2.cvtColor(img_cv, cv2.COLOR_BGR2GRAY)
|
| 135 |
img_gray = cv2.cvtColor(img_gray, cv2.COLOR_GRAY2BGR)
|
| 136 |
-
img_gray = cv2.convertScaleAbs(img_gray, alpha=0.5, beta=0)
|
| 137 |
-
|
| 138 |
result = np.where(mask[..., None] > 0, ela_color, img_gray)
|
| 139 |
|
| 140 |
os.remove(temp_path)
|
|
|
|
| 102 |
img_np = np.array(imagen.convert("RGB"))
|
| 103 |
img_cv = cv2.cvtColor(img_np, cv2.COLOR_RGB2BGR)
|
| 104 |
|
| 105 |
+
# Fuerza la compresi贸n para detectar artefactos
|
| 106 |
+
quality = 75
|
|
|
|
|
|
|
|
|
|
|
|
|
| 107 |
temp_path = "/tmp/temp_image.jpg"
|
| 108 |
cv2.imwrite(temp_path, img_cv, [cv2.IMWRITE_JPEG_QUALITY, quality])
|
| 109 |
img_comprimida = cv2.imread(temp_path)
|
| 110 |
if img_comprimida is None:
|
| 111 |
raise ValueError("No se pudo leer la imagen comprimida.")
|
| 112 |
|
| 113 |
+
# Calcula diferencias
|
| 114 |
diferencia = cv2.absdiff(img_cv.astype(np.float32), img_comprimida.astype(np.float32))
|
| 115 |
+
scaled_diff = np.clip(diferencia * 15, 0, 255).astype(np.uint8) # Escalado fuerte
|
|
|
|
| 116 |
|
| 117 |
+
# Convertir a escala de grises y aplicar umbral m谩s bajo
|
| 118 |
gray_diff = cv2.cvtColor(scaled_diff, cv2.COLOR_BGR2GRAY)
|
| 119 |
+
_, mask = cv2.threshold(gray_diff, 5, 255, cv2.THRESH_BINARY)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 120 |
|
| 121 |
+
# Resalta con color donde hay diferencias
|
| 122 |
+
ela_color = cv2.applyColorMap(gray_diff, cv2.COLORMAP_TURBO)
|
| 123 |
|
| 124 |
+
# Combinar con la original en escala de grises
|
| 125 |
img_gray = cv2.cvtColor(img_cv, cv2.COLOR_BGR2GRAY)
|
| 126 |
img_gray = cv2.cvtColor(img_gray, cv2.COLOR_GRAY2BGR)
|
|
|
|
|
|
|
| 127 |
result = np.where(mask[..., None] > 0, ela_color, img_gray)
|
| 128 |
|
| 129 |
os.remove(temp_path)
|