使用Python实现读取文件夹中的图片,将水印图片随机打在图片上,打上水印后的图片保存到同一文件夹,并水印位置保存为Yolo格式的txt文件每一个图片的txt单独保存,所有图片的txt文件保存在同一个文件中的示例代码
时间: 2024-04-15 17:28:29 浏览: 103
以下是一个示例代码,用于使用 Python 实现读取文件夹中的图片,将水印图片随机打在图片上,并保存打上水印后的图片到同一文件夹,同时将水印位置保存为 YOLO 格式的 txt 文件,每个图片的 txt 文件单独保存,所有图片的 txt 文件保存在同一个文件中:
```python
import cv2
import random
import os
def add_watermark(image, watermark_text):
# 选择字体、字号、字体厚度等参数
font = cv2.FONT_HERSHEY_SIMPLEX
font_scale = 1
font_thickness = 2
# 获取文字的大小
text_size, _ = cv2.getTextSize(watermark_text, font, font_scale, font_thickness)
# 随机生成水印的位置
x = random.randint(0, image.shape[1] - text_size[0] - 10)
y = random.randint(text_size[1] + 10, image.shape[0] - 10)
# 在图片上添加水印
cv2.putText(image, watermark_text, (x, y), font, font_scale, (0, 0, 255), font_thickness)
return (x, y)
def save_yolo_format_txt(image_path, watermark_position):
# 获取图片文件名(不包含路径和扩展名)
image_name = os.path.splitext(os.path.basename(image_path))[0]
# YOLO 格式的水印位置
x_center = watermark_position[0] + watermark_position[2] / 2
y_center = watermark_position[1] + watermark_position[3] / 2
width = watermark_position[2]
height = watermark_position[3]
# 保存水印位置到 YOLO 格式的文本文件
save_txt_path = f'{image_name}.txt'
with open(save_txt_path, 'w') as f:
f.write(f'0 {x_center} {y_center} {width} {height}')
# 图片文件夹路径
folder_path = 'images_folder'
# 水印图片路径
watermark_path = 'watermark.png'
# 读取水印图片
watermark_image = cv2.imread(watermark_path)
# 遍历文件夹中的图片
for filename in os.listdir(folder_path):
if filename.endswith('.jpg') or filename.endswith('.png'):
# 图片路径
image_path = os.path.join(folder_path, filename)
# 读取图片
image = cv2.imread(image_path)
# 添加水印并保存水印位置
watermark_position = add_watermark(image, watermark_image)
# 保存带有水印的图片
save_image_path = os.path.join(folder_path, f'watermarked_{filename}')
cv2.imwrite(save_image_path, image)
# 保存水印位置到 YOLO 格式的文本文件
save_yolo_format_txt(image_path, watermark_position)
```
请确保您将代码中的 `images_folder` 替换为包含要处理图片的文件夹的路径,并将 `watermark.png` 替换为您的水印图片的路径。代码将遍历文件夹中的所有图片,并将水印添加到每张图片上,同时保存带有水印的图片和水印位置的 YOLO 格式的 txt 文件。每张图片的 txt 文件将与对应的图片文件同名,并保存在同一文件夹中。
阅读全文
相关推荐
















