python-如何使用opencv将等宽字体插入图像?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-如何使用opencv将等宽字体插入图像?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2122字,纯文字阅读大概需要4分钟。
内容图文
目前,我可以使用openCV API(putText)在图像中插入HERSHEY字体的一些文本.但是似乎openCV不支持任何等宽字体.
我想知道如何在图像中插入一些等宽或固定间距的文本.
解决方法:
您可以很容易地在该方面使用PIL / Pillow. OpenCV图像是numpy数组,因此您可以使用以下方法从OpenCV图像制作枕头图像:
PilImage = Image.fromarray(OpenCVimage)
然后,您可以在我的答案here中使用代码使用等距字体绘制.您只需要在注释“获取绘图上下文”之后的3行即可.
然后,您可以使用以下方法将其转换回OpenCV映像:
OpenCVimage = np.array(PilImage)
可能看起来像这样:
#!/usr/local/bin/python3
from PIL import Image, ImageFont, ImageDraw
import numpy as np
import cv2
# Open image with OpenCV
im_o = cv2.imread('start.png')
# Make into PIL Image
im_p = Image.fromarray(im_o)
# Get a drawing context
draw = ImageDraw.Draw(im_p)
monospace = ImageFont.truetype("/Library/Fonts/Andale Mono.ttf",32)
draw.text((40, 80),"Hopefully monospaced",(255,255,255),font=monospace)
# Convert back to OpenCV image and save
result_o = np.array(im_p)
cv2.imwrite('result.png', result_o)
或者,您可以让一个函数本身生成一个画布块,在其上编写文本,然后将其拼接到您想要的任意位置的OpenCV图像中.遵循这些原则-尽管我不知道您需要什么灵活性,所以我没有参数化所有内容:
#!/usr/local/bin/python3
from PIL import Image, ImageFont, ImageDraw, ImageColor
import numpy as np
import cv2
def GenerateText(size, fontsize, bg, fg, text):
"""Generate a piece of canvas and draw text on it"""
canvas = Image.new('RGB', size, bg)
# Get a drawing context
draw = ImageDraw.Draw(canvas)
monospace = ImageFont.truetype("/Library/Fonts/Andale Mono.ttf",fontsize)
draw.text((10, 10), text, fg, font=monospace)
# Change to BGR order for OpenCV's peculiarities
return cv2.cvtColor(np.array(canvas), cv2.COLOR_RGB2BGR)
# Open image with OpenCV
im_o = cv2.imread('start.png')
# Try some tests
w,h = 350,50
a,b = 20, 80
text = GenerateText((w,h), 32, 'black', 'magenta', "Magenta on black")
im_o[a:a+h, b:b+w] = text
w,h = 200,40
a,b = 120, 280
text = GenerateText((w,h), 18, 'cyan', 'blue', "Blue on cyan")
im_o[a:a+h, b:b+w] = text
cv2.imwrite('result.png', im_o)
关键字:OpenCV,Python,Numpy,PIL,Pillow,图像,图像处理,等宽字体,字体,字体,固定,固定宽度,快递,HERSHEY.
内容总结
以上是互联网集市为您收集整理的python-如何使用opencv将等宽字体插入图像?全部内容,希望文章能够帮你解决python-如何使用opencv将等宽字体插入图像?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。