Skip to content

Commit

Permalink
support to chinese in draw_bbox
Browse files Browse the repository at this point in the history
  • Loading branch information
TingquanGao committed Aug 29, 2023
1 parent fcea7fd commit cc312a7
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 12 deletions.
8 changes: 4 additions & 4 deletions ppdet/utils/compact.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import PIL

def imagedraw_textsize_c(draw, text):
def imagedraw_textsize_c(draw, text, font=None):
if int(PIL.__version__.split('.')[0]) < 10:
tw, th = draw.textsize(text)
tw, th = draw.textsize(text, font=font)
else:
left, top, right, bottom = draw.textbbox((0, 0), text)
left, top, right, bottom = draw.textbbox((0, 0), text, font=font)
tw, th = right - left, bottom - top

return tw, th

10 changes: 5 additions & 5 deletions ppdet/utils/download.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ def create_voc_list(data_dir, devkit_subdir='VOCdevkit'):
years = ['2007', '2012']

# NOTE: since using auto download VOC
# dataset, VOC default label list should be used,
# dataset, VOC default label list should be used,
# do not generate label_list.txt here. For default
# label, see ../data/source/voc.py
create_list(devkit_dir, years, data_dir)
Expand Down Expand Up @@ -296,7 +296,7 @@ def get_path(url, root_dir, md5sum=None, check_exist=True):

# new weights format which postfix is 'pdparams' not
# need to decompress
if osp.splitext(fullname)[-1] not in ['.pdparams', '.yml']:
if osp.splitext(fullname)[-1] not in ['.pdparams', '.yml', '.ttf']:
_decompress_dist(fullname)

return fullpath, False
Expand Down Expand Up @@ -411,7 +411,7 @@ def _download_dist(url, path, md5sum=None):
must_mkdirs(path)

if not osp.exists(fullname):
with open(lock_path, 'w'): # touch
with open(lock_path, 'w'): # touch
os.utime(lock_path, None)
if rank_id_curr_node == 0:
_download(url, path, md5sum)
Expand All @@ -425,7 +425,7 @@ def _download_dist(url, path, md5sum=None):


def _check_exist_file_md5(filename, md5sum, url):
# if md5sum is None, and file to check is weights file,
# if md5sum is None, and file to check is weights file,
# read md5um from url and check, else check md5sum directly
return _md5check_from_url(filename, url) if md5sum is None \
and filename.endswith('pdparams') \
Expand Down Expand Up @@ -525,7 +525,7 @@ def _decompress_dist(fname):
# trainer pipeline in order
# **change this if you have more elegent methods**
if ParallelEnv().current_endpoint in unique_endpoints:
with open(lock_path, 'w'): # touch
with open(lock_path, 'w'): # touch
os.utime(lock_path, None)
_decompress(fname)
os.remove(lock_path)
Expand Down
Binary file added ppdet/utils/simfang.ttf
Binary file not shown.
13 changes: 10 additions & 3 deletions ppdet/utils/visualizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,16 @@
from __future__ import print_function
from __future__ import unicode_literals

import os
import numpy as np
from PIL import Image, ImageDraw
from PIL import Image, ImageDraw, ImageFont
import cv2
import math

from .colormap import colormap
from ppdet.utils.logger import setup_logger
from ppdet.utils.compact import imagedraw_textsize_c
from ppdet.utils.download import get_path
logger = setup_logger(__name__)

__all__ = ['visualize_results']
Expand Down Expand Up @@ -86,6 +88,11 @@ def draw_bbox(image, im_id, catid2name, bboxes, threshold):
"""
Draw bbox on image
"""
font_url = "https://paddledet.bj.bcebos.com/simfang.ttf"
font_path , _ = get_path(font_url, "~/.cache/paddle/")
font_size = 18
font = ImageFont.truetype(font_path, font_size, encoding="utf-8")

draw = ImageDraw.Draw(image)

catid2color = {}
Expand Down Expand Up @@ -126,10 +133,10 @@ def draw_bbox(image, im_id, catid2name, bboxes, threshold):

# draw label
text = "{} {:.2f}".format(catid2name[catid], score)
tw, th = imagedraw_textsize_c(draw, text)
tw, th = imagedraw_textsize_c(draw, text, font=font)
draw.rectangle(
[(xmin + 1, ymin - th), (xmin + tw + 1, ymin)], fill=color)
draw.text((xmin + 1, ymin - th), text, fill=(255, 255, 255))
draw.text((xmin + 1, ymin - th), text, fill=(255, 255, 255), font=font)

return image

Expand Down

0 comments on commit cc312a7

Please sign in to comment.