PILを使って出力できることは分かったのですがプログラムがうまく通りません。
text = "テスト" # 描画する文字 fontface = cv2.FONT_HERSHEY_SIMPLEX # フォントの種類 fontscale = 1.0 # 文字のスケール thickness = 2 # 文字の太さ x, y = 50, 50 # ベースラインの始点 image = Image.fromarray(img) draw = ImageDraw.Draw(image) # 文字列を描画した際の大きさを取得する。 (w, h), baseline = cv2.getTextSize(text, fontface, fontscale, thickness) # 文字を囲む矩形を描画する。 cv2.rectangle(img, (x, y - h), (x + w, y + baseline), (0, 0, 255), thickness) # 文字列を描画する。 draw.text((x,y),text,font=ImageFont.truetype("YuGothL.ttc",size=12),fill=(255,0,0))
imgが画像データです。
長方形の中にテストという文字を出したいのですが、長方形だけ出力されて、textのテストが出力されません。
エラーメッセージも特になく困っています。ご教授お願い致します。
追記
class A: def __init___(self): self.img = "" 省略 def draw_text_with_box(img, origin, text, fontsize=20, color="red"): # フォントを作成する。 font = ImageFont.truetype("ipag.ttc", size=fontsize) # 使用フォントは変更してください draw = ImageDraw.Draw(img, mode="RGBA") # テキストの大きさを取得する。 size = draw.textsize(text, font=font) # テキストを囲む矩形を描画する。 draw.rectangle( (origin, (origin[0] + size[0] - 1, origin[1] + size[1] - 1)), outline="black", width=2, ) # テキストを描画する。。 draw.text(origin, text, fill=color, font=font) def name(data) img = Image.fromarray(cv2.cvtColor(data.img, cv2.COLOR_BGR2RGB)) # RGB に並び替え必要 draw_text_with_box(img, (30, 30), text_name, color="blue", fontsize=30) def B(file): img = cv2.imread(file) cv.imshow('image',img) with open(file,'rb') as file_image: source_bytes = file_image.read() data = A() data.img = img image(data) cv2.imshow('image',data.img) def main(): B(file)
一部省略していますが、def nameでtext_nameを取得するためにdataを引数としています。
また、(30,30)の部分を変更するためにものちにdataを使います。