Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PIL更改OpenCV Python中的字体族 以上答案不能解决我的问题。_Python_Opencv_Pillow_Opencv Python - Fatal编程技术网

使用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)