【问题标题】:cv2.PutText vs cv2.AddText what is the difference between the two?cv2.PutText vs cv2.AddText 两者有什么区别?
【发布时间】:2021-01-15 04:32:49
【问题描述】:

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

谢谢

【问题讨论】:

  • 你能链接一些关于addText的东西吗?因为我是第一次听到并且找不到任何关于它的文件
  • 显然差异包括addTextcan use system fontsputText可能通过字体枚举成员限制为Hershey。

标签: python opencv opencv-python


【解决方案1】:

就像第一条评论中的尤努斯一样,我还不知道 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 的东西 - 没有找到工作文档

【讨论】:

  • 非常感谢。这正是我正在寻找的。我也不知道。我的 IDE 具有智能感知功能,并建议我两者。
【解决方案2】:

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

实际上 cv2.AddText 似乎在 Qt 上下文中使用,如果你编译 OpenCV 并支持 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 包装器。

【讨论】:

    猜你喜欢
    • 2021-06-25
    • 1970-01-01
    • 2021-12-20
    • 2019-08-25
    • 2017-08-31
    • 2021-02-18
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    相关资源
    最近更新 更多