import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont
for i in range(5):
fname = './hecheng/{}.jpg'.format(i)
img = cv2.imread(fname)
# 画矩形框 距离靠左靠上的位置
# p1指的是框左边上边到图像左边上边距离
# p2指的是框右边下边到图像左边上边距离
# fname就写自己图片所在位置
p1 = (250, 365) # 左边,上边 #数1 , 数2
p2 = (250 + 540, 365 + 105) # 右边,下边 #数1+数3,数2+数4
cv2.rectangle(img, p1, p2, (0, 255, 0), 2)
a = "营业执照" # 类别名称
font = cv2.FONT_HERSHEY_SIMPLEX # 定义字体
imgzi = cv2.putText(img, '{}'.format(a), (250, 365 - 5), font, 1, (0, 255, 255), 4)
# imgzi = cv2.putText(图片, '{} {:.3f}'.format(标签名, 置信度), (字体左边开始位置, 字体上面开始位置), 字体, 字体大小, (R, G, B), 字体厚度)
# 图像, 文字内容, 坐标(右上角坐标),字体, 大小, 颜色, 字体厚度
cv2.imwrite('./test/test{}.jpg'.format(i), img)
print("over over")
自己在图片上添加文字,但是却显示的是问号,因此在网上搜索了下解决的方法,希望能够帮到大家
import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont
def cv2ImgAddText(img, text, left, top, textColor=(0, 255, 0), textSize=20):
if (isinstance(img, np.ndarray)): # 判断是否OpenCV图片类型
img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
# 创建一个可以在给定图像上绘图的对象
draw = ImageDraw.Draw(img)
# 字体的格式
fontStyle = ImageFont.truetype(
"STSONG.TTF", textSize, encoding="utf-8")
# 绘制文本
draw.text((left, top), text, textColor, font=fontStyle)
# 转换回OpenCV格式
return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
a = "营业执照"
for i in range(5):
img = cv2ImgAddText(Image.open('./img/{}.jpg'.format(i)), a, 250, 365 - 25, (0, 255, 139), 20) #添加
# cv2ImgAddText(图像, 文字内容, 字体左边开始位置, 字体上面开始位置, (R, G, B), 字体大小)
#添加框
p1 = (250, 365) # 左边,上边 #数1 , 数2
p2 = (250 + 540, 365 + 105) # 右边,下边 #数1+数3,数2+数4
cv2.rectangle(img, p1, p2, (0, 255, 0), 2)
cv2.imwrite('./test/test{}.jpg'.format(i), img) #保存图片
print("over over")