使用PIL更改OpenCV Python中的字体族 以上答案不能解决我的问题。
我正在使用使用PIL更改OpenCV Python中的字体族 以上答案不能解决我的问题。,python,opencv,pillow,opencv-python,Python,Opencv,Pillow,Opencv Python,我正在使用cv2.putText()将文本放置在视频上 这和预期的一样,但我正在尝试使用不同的字体(OpenCV中不可用) 我知道OpenCV仅限于cv2.FONT\u HERSHEY字体,因此我将PIL与OpenCV结合使用来实现这一点 我用这种方法处理图像,实验是成功的。但当我在视频中尝试类似的东西时,我失败了 import cv2 from PIL import ImageFont, ImageDraw, Image camera = cv2.VideoCapture('some_vid
cv2.putText()
将文本放置在视频上
这和预期的一样,但我正在尝试使用不同的字体(OpenCV中不可用)
我知道OpenCV仅限于cv2.FONT\u HERSHEY
字体,因此我将PIL与OpenCV结合使用来实现这一点
我用这种方法处理图像,实验是成功的。但当我在视频中尝试类似的东西时,我失败了
import cv2
from PIL import ImageFont, ImageDraw, Image
camera = cv2.VideoCapture('some_video.wmv')
while cv2.waitKey(30) < 0:
rv, frame = camera.read()
if rv:
font = ImageFont.truetype("calibrii.ttf", 80)
cv2.putText(frame, 'Hello World!', (600, 600), font, 2.8, 255)
cv2.imshow('Video', frame)
您可以使用OpenCV的freetype模块来实现这一点,无需使用PIL
import cv2
import numpy as np
img = np.zeros((100, 300, 3), dtype=np.uint8)
ft = cv2.freetype.createFreeType2()
ft.loadFontData(fontFileName='Ubuntu-R.ttf',
id=0)
ft.putText(img=img,
text='Quick Fox',
org=(15, 70),
fontHeight=60,
color=(255, 255, 255),
thickness=-1,
line_type=cv2.LINE_AA,
bottomLeftOrigin=True)
cv2.imwrite('image.png', img)
这个屏幕的输出是。可能重复@消音器我不明白你怎么会认为这是一个重复的问题。我知道你链接到的答案是你自己的答案;但你的答案显然是针对图像而不是视频。我在问题中解释说,我有图像的解决方案,但我的问题是如何将类似的PIL解决方案应用于视频。你对我的问题有什么解决办法吗?@zindarod谢谢你的评论。我上周才第一次开始学习OpenCV。也就是说,我知道视频是一系列图像…哈哈。我刚刚从OpenCV中创建的图像构建了一些视频。这很有趣,但我想使用已经存在的
cv2.putText
将文本直接放到视频中,效果非常好!!只是,好时字体恰巧很难看。所以,我尽量避免用一张一张的方式来做这件事。这可能是有用的。。。非常感谢你帮我做这件事。第一次尝试时,我得到的是属性错误:模块“cv2”没有属性“freetype”
。我正在使用opencv3.4.1
和python3.5.2
。有什么建议吗?再次感谢。可能需要这个pip安装opencv-contrib-python
我在Conda中创建了一个新环境并安装了opencv-contrib-python
。我可以导入cv2
,这样它就可以工作了,但我仍然得到了相同的属性错误
。我对这个模块非常兴奋,我希望我能让它工作。有什么问题吗?根据这个:,freetype不能与Python一起工作
import cv2
import numpy as np
img = np.zeros((100, 300, 3), dtype=np.uint8)
ft = cv2.freetype.createFreeType2()
ft.loadFontData(fontFileName='Ubuntu-R.ttf',
id=0)
ft.putText(img=img,
text='Quick Fox',
org=(15, 70),
fontHeight=60,
color=(255, 255, 255),
thickness=-1,
line_type=cv2.LINE_AA,
bottomLeftOrigin=True)
cv2.imwrite('image.png', img)