Unverified 提交 c1bed601 authored 作者: Diego Montes's avatar Diego Montes 提交者: GitHub

Fix `isascii()` method calls for python 3.6 (#4958)

* fix isascii for python3.6 * update comment with python 3.7 note Co-authored-by: 's avatarGlenn Jocher <glenn.jocher@ultralytics.com>
上级 2993c3fa
...@@ -160,6 +160,11 @@ def is_pip(): ...@@ -160,6 +160,11 @@ def is_pip():
# Is file in a pip package? # Is file in a pip package?
return 'site-packages' in Path(__file__).resolve().parts 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='人工智能'): def is_chinese(s='人工智能'):
# Is string composed of any Chinese characters? # Is string composed of any Chinese characters?
......
...@@ -17,7 +17,7 @@ import seaborn as sn ...@@ -17,7 +17,7 @@ import seaborn as sn
import torch import torch
from PIL import Image, ImageDraw, ImageFont 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 from utils.metrics import fitness
# Settings # Settings
...@@ -68,7 +68,7 @@ class Annotator: ...@@ -68,7 +68,7 @@ class Annotator:
# YOLOv5 Annotator for train/val mosaics and jpgs and detect/hub inference annotations # 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'): 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.' 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 if self.pil: # use PIL
self.im = im if isinstance(im, Image.Image) else Image.fromarray(im) self.im = im if isinstance(im, Image.Image) else Image.fromarray(im)
self.draw = ImageDraw.Draw(self.im) self.draw = ImageDraw.Draw(self.im)
...@@ -80,7 +80,7 @@ class Annotator: ...@@ -80,7 +80,7 @@ class Annotator:
def box_label(self, box, label='', color=(128, 128, 128), txt_color=(255, 255, 255)): def box_label(self, box, label='', color=(128, 128, 128), txt_color=(255, 255, 255)):
# Add one xyxy box to image with label # 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 self.draw.rectangle(box, width=self.lw, outline=color) # box
if label: if label:
w, h = self.font.getsize(label) # text width, height w, h = self.font.getsize(label) # text width, height
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论