nude_to_watermark.py 807 B

1234567891011121314151617181920212223242526
  1. import cv2
  2. import numpy as np
  3. import os
  4. # create_watermark ===============================================================
  5. # return:
  6. # (<Boolean> True/False), depending on the transformation process
  7. def create_watermark(nude):
  8. # Add alpha channel if missing
  9. if nude.shape[2] < 4:
  10. nude = np.dstack([nude, np.ones((512, 512), dtype="uint8") * 255])
  11. watermark = cv2.imread("fake.png", cv2.IMREAD_UNCHANGED)
  12. f1 = np.asarray([0, 0, 0, 250]) # red color filter
  13. f2 = np.asarray([255, 255, 255, 255])
  14. mask = cv2.bitwise_not(cv2.inRange(watermark, f1, f2))
  15. mask_inv = cv2.bitwise_not(mask)
  16. res1 = cv2.bitwise_and(nude, nude, mask = mask)
  17. res2 = cv2.bitwise_and(watermark, watermark, mask = mask_inv)
  18. res = cv2.add(res1, res2)
  19. alpha = 0.6
  20. return cv2.addWeighted(res, alpha, nude, 1 - alpha, 0)