Introduction
Last week I spent 3 hours trying to remove watermarks from a set of images, only to realize I could have automated it in 20 lines of Python. You will build a Python script that can automatically add and remove watermarks from images using the OpenCV library. This matters in 2026 because, with the rise of AI-generated content, watermarks have become a crucial aspect of ownership and authenticity. To get started, you will need:
- Python 3.8 or higher installed on your system
- OpenCV library installed (
pip install opencv-python) - A set of images to test the script
Table of Contents
- Introduction
- Step 1 — Add Watermark to Image
- Step 2 — Remove Watermark from Image
- Step 3 — Apply Watermark to Multiple Images
- Step 4 — Remove Watermark from Multiple Images
- Step 5 — Integrate Watermark Script into Automation Workflow
- Real-World Usage
- Real-World Application
- Conclusion
- Your Turn
Step 1 — Add Watermark to Image
Adding a watermark to an image is a crucial step in protecting ownership and authenticity. Here's how you can do it:
import cv2
import numpy as np
# Load the image
image = cv2.imread('image.jpg')
# Load the watermark
watermark = cv2.imread('watermark.png')
# Get the height and width of the image and watermark
h, w, _ = image.shape
wm_h, wm_w, _ = watermark.shape
# Calculate the position to place the watermark
position = (w - wm_w - 10, h - wm_h - 10)
# Add the watermark to the image
image[position[1]:position[1]+wm_h, position[0]:position[0]+wm_w] = watermark
# Save the watermarked image
cv2.imwrite('watermarked_image.jpg', image)
The expected output will be an image with a watermark added to the bottom-right corner.
Step 2 — Remove Watermark from Image
Removing a watermark from an image can be a challenging task, but it can be done using image processing techniques. Here's how you can do it:
import cv2
import numpy as np
# Load the watermarked image
image = cv2.imread('watermarked_image.jpg')
# Convert the image to grayscale
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Apply threshold to segment out the watermark
_, thresh = cv2.threshold(gray, 250, 255, cv2.THRESH_BINARY)
# Find the contours of the watermark
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# Iterate through the contours and remove the watermark
for contour in contours:
x, y, w, h = cv2.boundingRect(contour)
if w > 50 and h > 50:
image[y:y+h, x:x+w] = (0, 0, 0)
# Save the image without watermark
cv2.imwrite('image_without_watermark.jpg', image)
The expected output will be an image without a watermark.
Step 3 — Apply Watermark to Multiple Images
Applying a watermark to multiple images can be done by iterating through a list of images and applying the watermark to each one. Here's how you can do it:
import cv2
import numpy as np
import os
# Load the watermark
watermark = cv2.imread('watermark.png')
# Get the list of images
images = os.listdir('images')
# Iterate through the images and apply the watermark
for image_name in images:
image = cv2.imread(os.path.join('images', image_name))
h, w, _ = image.shape
wm_h, wm_w, _ = watermark.shape
position = (w - wm_w - 10, h - wm_h - 10)
image[position[1]:position[1]+wm_h, position[0]:position[0]+wm_w] = watermark
cv2.imwrite(os.path.join('watermarked_images', image_name), image)
The expected output will be a set of images with watermarks added.
Step 4 — Remove Watermark from Multiple Images
Removing a watermark from multiple images can be done by iterating through a list of images and removing the watermark from each one. Here's how you can do it:
import cv2
import numpy as np
import os
# Get the list of watermarked images
images = os.listdir('watermarked_images')
# Iterate through the images and remove the watermark
for image_name in images:
image = cv2.imread(os.path.join('watermarked_images', image_name))
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 250, 255, cv2.THRESH_BINARY)
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
x, y, w, h = cv2.boundingRect(contour)
if w > 50 and h > 50:
image[y:y+h, x:x+w] = (0, 0, 0)
cv2.imwrite(os.path.join('images_without_watermark', image_name), image)
The expected output will be a set of images without watermarks.
Step 5 — Integrate Watermark Script into Automation Workflow
Integrating the watermark script into an automation workflow can be done by using tools like Hostinger for hosting and Namecheap for domain management. Here's how you can do it:
import os
import schedule
import time
# Define the function to add watermark
def add_watermark():
# Add watermark to images
images = os.listdir('images')
for image_name in images:
image = cv2.imread(os.path.join('images', image_name))
h, w, _ = image.shape
wm_h, wm_w, _ = watermark.shape
position = (w - wm_w - 10, h - wm_h - 10)
image[position[1]:position[1]+wm_h, position[0]:position[0]+wm_w] = watermark
cv2.imwrite(os.path.join('watermarked_images', image_name), image)
# Schedule the function to run every hour
schedule.every(1).hours.do(add_watermark)
while True:
schedule.run_pending()
time.sleep(1)
The expected output will be a set of images with watermarks added every hour.
Real-World Usage
The script can be used to add and remove watermarks from images in real-world scenarios such as:
- Adding watermarks to product images for e-commerce websites
- Removing watermarks from images for social media platforms
- Integrating the script into an automation workflow for image processing tasks
Real-World Application
The script can be used to solve real-world problems such as:
- Protecting ownership and authenticity of images
- Automating image processing tasks
- Improving the efficiency of image processing workflows
Conclusion
In this article, you learned how to master watermarks in 5 minutes using Python. The key takeaways are:
- Adding a watermark to an image can be done using OpenCV library.
- Removing a watermark from an image can be done using image processing techniques.
- Integrating the watermark script into an automation workflow can be done using tools like Hostinger and Namecheap.
What to build next? Try integrating the watermark script with other image processing tasks such as image resizing and cropping.
💬 Your Turn
Have you automated image processing tasks before? What was your approach? Drop it in the comments — I read every one.
💡 Found this helpful?
If this tutorial saved you time or solved a problem, consider:
Every coffee or donation keeps me writing free tutorials like this one!
This article was written with AI assistance and reviewed for technical accuracy.
Part of the **Python Automation Mastery* series — Follow for more free tutorials*
#aBotWroteThis
Top comments (0)