Skip to content

Commit

Permalink
Fix isascii() method calls for python 3.6 (ultralytics#4958)
Browse files Browse the repository at this point in the history
* fix isascii for python3.6

* update comment with python 3.7 note

Co-authored-by: Glenn Jocher <glenn.jocher@ultralytics.com>
  • Loading branch information
d57montes and glenn-jocher authored Sep 28, 2021
1 parent bf68335 commit 29c348a
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 3 deletions.
5 changes: 5 additions & 0 deletions utils/general.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,11 @@ def is_pip():
# Is file in a pip package?
return 'site-packages' in Path(__file__).resolve().parts

def is_ascii(s=''):
# Is string composed of all ASCII (no UTF) characters? (note str().isascii() introduced in python 3.7)
s = str(s) # convert list, tuple, None, etc. to str
return len(s.encode().decode('ascii', 'ignore')) == len(s)


def is_chinese(s='人工智能'):
# Is string composed of any Chinese characters?
Expand Down
6 changes: 3 additions & 3 deletions utils/plots.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import torch
from PIL import Image, ImageDraw, ImageFont

from utils.general import user_config_dir, is_chinese, xywh2xyxy, xyxy2xywh
from utils.general import user_config_dir, is_ascii, is_chinese, xywh2xyxy, xyxy2xywh
from utils.metrics import fitness

# Settings
Expand Down Expand Up @@ -68,7 +68,7 @@ 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=False, example='abc'):
assert im.data.contiguous, 'Image not contiguous. Apply np.ascontiguousarray(im) to Annotator() input images.'
self.pil = pil or not example.isascii() or is_chinese(example)
self.pil = pil or not is_ascii(example) or is_chinese(example)
if self.pil: # use PIL
self.im = im if isinstance(im, Image.Image) else Image.fromarray(im)
self.draw = ImageDraw.Draw(self.im)
Expand All @@ -80,7 +80,7 @@ def __init__(self, im, line_width=None, font_size=None, font='Arial.ttf', pil=Fa

def box_label(self, box, label='', color=(128, 128, 128), txt_color=(255, 255, 255)):
# Add one xyxy box to image with label
if self.pil or not label.isascii():
if self.pil or not is_ascii(label):
self.draw.rectangle(box, width=self.lw, outline=color) # box
if label:
w, h = self.font.getsize(label) # text width, height
Expand Down

0 comments on commit 29c348a

Please sign in to comment.