lniki's picture
add model
0e83290 verified
from PIL import Image, ImageDraw, ImageFont
import os
from pathlib import Path
def draw(images_path, labels_path):
pa = Path.cwd() / 'video-test' / 'dt-tomato'
pal = Path(pa / labels_path)
dir_list = sorted(pal.glob('*'))
for each in dir_list:
draw_labels_on_image(
pa, images_path, pal, os.path.splitext(os.path.split(each)[1])[0]
)
def draw_labels_on_image(path, images_path, labels_path, file_name) -> None:
"""Draws labels on an image using the provided labels file."""
image = Image.open(f'{path}/{images_path}/{file_name}.jpg')
width, height = image.size
with open(labels_path / f"{file_name}.txt") as file:
for line in file:
class_id, x_center, y_center, width_factor, height_factor = line.split()
x = float(x_center) * width
y = float(y_center) * height
width_factor = int(float(width_factor) * width)
height_factor = int(float(height_factor) * height)
font = ImageFont.truetype("arial.ttf", 15)
draw = ImageDraw.Draw(image)
draw.text((x, y), class_id, font=font, fill=(255, 0, 0))
draw.rectangle(
(
(x - width_factor // 2),
(y - height_factor // 2),
(x + width_factor // 2),
(y + height_factor // 2),
),
outline=(255, 255, 255),
width=2,
)
image.save(f'{path}/t{file_name}.jpg', quality=95)
if __name__ == '__main__':
draw('images', 'lables')
# # Укажите путь к папке, которую нужно архивировать
# folder_path = Path.cwd() / 'data' / 'Helmetxy'
# # Укажите путь и имя архива
# archive_path = Path.cwd() / 'data' / 'Helmetxy'
# # Создайте архив
# shutil.make_archive(archive_path, 'zip', folder_path)