cv2.PutText与cv2.AddText两者的区别是什么?

2024-10-03 13:17:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用python cv2模块将一些文本应用于图像。 我发现了两个cv2函数,它们可以执行cv2.putTextcv2.addText。我想知道临!;每个都有缺点

多谢各位


Tags: 模块函数图像文本cv2缺点puttextaddtext
2条回答

添加以确保完整性并最终收集更多信息:

实际上,如果使用Qt支持编译OpenCV,cv2.AddText似乎在Qt上下文中使用。有关更多API和用法,请参见this page

但如果打开控制台并插入以下命令以了解Python OpenCV支持:

import cv2   # version 4.5.0 complied with Qt support
res = [f for f in dir(cv2) if 'Text' in f]
print(res)
['addText', 'getTextSize', 'putText', 'text_TextDetector', 'text_TextDetectorCNN', 'ximgproc_segmentation_SelectiveSearchSegmentationStrategyTexture']

我们可以看到addText和putText

但是,如果我们在文档(this page)中搜索“fontQt”函数:

res = [f for f in dir(cv2) if 'fontQt' in f]   # no results for 'Qt' also
print(res)
[]

因此,似乎Qt字体支持应该在OpenCV中可用,但它没有Python包装器

就像第一条评论中的尤努斯一样,我还不知道addText函数。必须先做一些研究

在C++源代码中,两个函数在不同的模块中实现。imgproc中的putText函数和highgui模块中的addText函数。据我所知,后者旨在方便地创建GUI。我想addText函数应该在这个GUI上下文中使用

这是我在python中找到的关于addText的唯一文档:https://kite.com/python/docs/cv2.addText 到目前为止,这个电话看起来一模一样。然而,当执行以下程序时,我得到以下错误:

img = cv2.imread("img url")

t = time.time()
cv2.putText(img, "Hello", (20,20), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0))
print(str(time.time() - t))
t = time.time()
cv2.addText(img, "World", (50,20), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0))
print(str(time.time() - t))

cv2.imshow("test", img)
cv2.waitKey(0)

错误:

Traceback (most recent call last):
   File ".../test.py", line 20, in <module>
      main()
   File ".../test.py", line 12, in main
      cv2.addText(img, "World", (50,20), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0))
SystemError: <built-in function addText> returned NULL without setting an error

要将其放入您的赞成、反对列表中:

putText: +工作 +常用 -没什么

添加文本: (+)可能在gui中可用 -未找到任何工作文档

相关问题 更多 >