Fixing bug in watermark logic

This commit is contained in:
Jason Antic
2020-02-18 18:58:23 -08:00
parent 8a9e145bd5
commit 1edfcc6253
+24 -17
View File
@@ -21,23 +21,30 @@ import cv2
# adapted from https://www.pyimagesearch.com/2016/04/25/watermarking-images-with-opencv-and-python/
def get_watermarked(pil_image: Image) -> Image:
image = cv2.cvtColor(np.array(pil_image), cv2.COLOR_RGB2BGR)
(h, w) = image.shape[:2]
image = np.dstack([image, np.ones((h, w), dtype="uint8") * 255])
full_watermark = cv2.imread('./resource_images/watermark.png', cv2.IMREAD_UNCHANGED)
pct = 0.05
(fwH, fwW) = full_watermark.shape[:2]
wH = int(pct * h)
wW = int((pct * h / fwH) * fwW)
watermark = cv2.resize(full_watermark, (wH, wW), interpolation=cv2.INTER_AREA)
overlay = np.zeros((h, w, 4), dtype="uint8")
overlay[h - wH - 10 : h - 10, 10 : 10 + wW] = watermark
# blend the two images together using transparent overlays
output = image.copy()
cv2.addWeighted(overlay, 0.5, output, 1.0, 0, output)
rgb_image = cv2.cvtColor(output, cv2.COLOR_BGR2RGB)
final_image = Image.fromarray(rgb_image)
return final_image
try:
image = cv2.cvtColor(np.array(pil_image), cv2.COLOR_RGB2BGR)
(h, w) = image.shape[:2]
image = np.dstack([image, np.ones((h, w), dtype="uint8") * 255])
full_watermark = cv2.imread(
'./resource_images/watermark.png', cv2.IMREAD_UNCHANGED
)
pct = 0.05
(fwH, fwW) = full_watermark.shape[:2]
wH = int(pct * h)
wW = int((pct * h / fwH) * fwW)
watermark = cv2.resize(full_watermark, (wH, wW), interpolation=cv2.INTER_AREA)
overlay = np.zeros((h, w, 4), dtype="uint8")
(wH, wW) = watermark.shape[:2]
overlay[h - wH - 10 : h - 10, 10 : 10 + wW] = watermark
# blend the two images together using transparent overlays
output = image.copy()
cv2.addWeighted(overlay, 0.5, output, 1.0, 0, output)
rgb_image = cv2.cvtColor(output, cv2.COLOR_BGR2RGB)
final_image = Image.fromarray(rgb_image)
return final_image
except:
# Don't want this to crash everything, so let's just not watermark the image for now.
return pil_image
class ModelImageVisualizer: