CV2.PutText vs cv2.添加文本 两者之间有什么区别?



我想使用 python cv2 模块将一些文本应用于图像。 我找到了两个可以cv2.putTextcv2.addText的cv2函数。我想知道每种方法的优缺点。

谢谢

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

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

这是我能找到的唯一关于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

把它放在你的赞成名单中:

放文本: + 作品 + 常用 -无

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

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

实际上是 cv2。AddText似乎用于Qt上下文,如果你在Qt支持下编译OpenCV。有关更多 API 和用法,请参阅此页面。

但是,如果您打开控制台并插入以下命令以了解 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。

但是,如果我们像文档(此页面(中搜索"fontQt"函数:

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

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

相关内容

最新更新