【发布时间】:2018-11-24 23:32:52
【问题描述】:
上面的答案并没有解决我的问题。
我正在使用cv2.putText() 在视频上放置文字。
这按预期工作,但我正在尝试使用不同的字体(OpenCV 中不可用)。
我了解 OpenCV 仅限于 cv2.FONT_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)
我在同一目录中有“calibrii.ttf”,正如我所提到的,这种方法适用于图像。
这是错误:
cv2.putText(frame, 'Hello World!', (600, 600), font, 2.8, 255)
TypeError: an integer is required (got type FreeTypeFont)
【问题讨论】:
-
@Silencer 我不明白你怎么会认为这是一个重复的问题。我知道您链接的答案是您自己的答案;但是您的答案显然是针对图像而不是视频。我在我的问题中解释说我有图像解决方案,但我的问题是如何将类似的 PIL 解决方案应用于视频。您对我的问题有解决方案吗?
-
@zindarod 感谢您的评论。我真的是上周第一次开始学习 OpenCV。也就是说,我知道视频是一系列图像......哈哈。我刚刚从我在 OpenCV 中创建的图像构建了一些视频。很好玩,不过我想用已经存在的
cv2.putText把文字直接放到视频里,效果很好!!只是,好时字体恰好丑陋。所以,我试图避免以艰难的方式做到这一点,即逐个图像。
标签: python opencv pillow opencv-python