Skip to content

Commit

Permalink
Auto-download Arial.ttf on init (ultralytics#4606)
Browse files Browse the repository at this point in the history
* Auto-download Arial.ttf on init

* Fix ROOT
  • Loading branch information
glenn-jocher authored Aug 30, 2021
1 parent e1f2ba3 commit 5ea994d
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 5 deletions.
16 changes: 16 additions & 0 deletions utils/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from pathlib import Path

import torch
from PIL import ImageFont

FILE = Path(__file__).absolute()
ROOT = FILE.parents[1] # yolov5/ dir

# Check YOLOv5 Annotator font
font = 'Arial.ttf'
try:
ImageFont.truetype(font)
except Exception as e: # download if missing
url = "https://ultralytics.com/assets/" + font
print(f'Downloading {url} to {ROOT / font}...')
torch.hub.download_url_to_file(url, str(ROOT / font))
9 changes: 4 additions & 5 deletions utils/plots.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def hex2rgb(h): # rgb order (PIL)
class Annotator:
# YOLOv5 Annotator for train/val mosaics and jpgs and detect/hub inference annotations
def __init__(self, im, line_width=None, font_size=None, font='Arial.ttf', pil=True):
assert im.data.contiguous, 'Image not contiguous. Apply np.ascontiguousarray(im) to plot_on_box() input image.'
assert im.data.contiguous, 'Image not contiguous. Apply np.ascontiguousarray(im) to Annotator() input images.'
self.pil = pil
if self.pil: # use PIL
self.im = im if isinstance(im, Image.Image) else Image.fromarray(im)
Expand All @@ -57,11 +57,10 @@ def __init__(self, im, line_width=None, font_size=None, font='Arial.ttf', pil=Tr
f = font_size or max(round(s * 0.035), 12)
try:
self.font = ImageFont.truetype(font, size=f)
except Exception as e: # download TTF if missing
print(f'WARNING: Annotator font {font} not found: {e}')
url = "https://github.com/ultralytics/yolov5/releases/download/v1.0/" + font
except Exception as e: # download if missing
url = "https://ultralytics.com/assets/" + font
print(f'Downloading {url} to {font}...')
torch.hub.download_url_to_file(url, font)
print(f'Annotator font successfully downloaded from {url} to {font}')
self.font = ImageFont.truetype(font, size=f)
self.fh = self.font.getsize('a')[1] - 3 # font height
else: # use cv2
Expand Down

0 comments on commit 5ea994d

Please sign in to comment.