我想使用 python cv2 模块将一些文本应用于图像。 我找到了两个可以cv2.putText
和cv2.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包装器。