详细解读cv2.puttext

一、概述

cv2.puttext是OpenCV库中的一种图像绘制方法,它能够在图像上绘制文字。对于需要在图片中加入文字的场景,cv2.puttext提供了一种比较直接方便的方式。

二、函数参数

cv2.putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]])

上述参数分别表示:

  • img:需要绘制文本的图像;
  • text:要绘制的文本内容;
  • org:绘制文本的起始点;
  • fontFace:字体类型,如cv2.FONT_HERSHEY_SIMPLEX、cv2.FONT_HERSHEY_PLAIN等;
  • fontScale:字体大小;
  • color:字体颜色;
  • thickness:字体粗细,默认为1;
  • lineType:线条类型,默认为cv2.LINE_AA;
  • bottomLeftOrigin:坐标原点,默认为False,即左上角。

其中,org定义了文本起始位置,可以用一个元祖来表示x、y坐标,例如(10, 100)表示x=10,y=100。

三、实现过程

下面通过几个实际的例子,来演示cv2.puttext的使用方法。

例1:在图片中央添加文字

首先,我们创建一个黑色背景的图片,并在其中心位置添加一段黑色的文字。

import numpy as np
import cv2

# create a black background image
img = np.zeros((512, 512, 3), np.uint8)

# add text to the image
text = "Hello, cv2.puttext!"
font = cv2.FONT_HERSHEY_SIMPLEX
org = (int(img.shape[1] / 2) - 100, int(img.shape[0] / 2))
fontScale = 1
color = (0, 0, 0)
thickness = 2
lineType = cv2.LINE_AA
cv2.putText(img, text, org, font, fontScale, color, thickness, lineType)

# show the image
cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

执行上述代码,会显示出一张黑色背景,并在中央位置添加了黑色的文字“Hello, cv2.puttext!”。

例2:设置不同大小、颜色的字体

在很多场景中,我们需要在图片中添加不同大小、颜色的字体。下面的例子中,我们将在图片中央分别添加大小、颜色不同的两段文字。

import numpy as np
import cv2

# create a white background image
img = np.zeros((512, 512, 3), np.uint8)

# add first text to the image
text1 = "Hello, cv2.puttext!"
font1 = cv2.FONT_HERSHEY_SIMPLEX
org1 = (int(img.shape[1] / 2) - 150, int(img.shape[0] / 2))
fontScale1 = 2
color1 = (255, 0, 0)
thickness1 = 2
lineType1 = cv2.LINE_AA
cv2.putText(img, text1, org1, font1, fontScale1, color1, thickness1, lineType1)

# add second text to the image
text2 = "OpenCV is amazing!"
font2 = cv2.FONT_HERSHEY_SIMPLEX
org2 = (int(img.shape[1] / 2) - 200, int(img.shape[0] / 2) + 80)
fontScale2 = 1
color2 = (0, 255, 0)
thickness2 = 2
lineType2 = cv2.LINE_AA
cv2.putText(img, text2, org2, font2, fontScale2, color2, thickness2, lineType2)

# show the image
cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

执行上述代码,会显示出一张白色背景,并在中央位置分别添加了大小不同、颜色不同的两段文字。

例3:绘制阴影效果

在一些场景中,我们需要给文字添加一些阴影效果,以增强文字的清晰度。下面的例子中,我们将在图片中央添加一个带有阴影效果的文本。

import numpy as np
import cv2

# create a white background image
img = np.zeros((512, 512, 3), np.uint8)

# add text to the image with shadow effect
text = "Hello, cv2.puttext!"
font = cv2.FONT_HERSHEY_SIMPLEX
org = (int(img.shape[1] / 2) - 150, int(img.shape[0] / 2))
fontScale = 2
color = (255, 255, 255)
thickness = 2
lineType = cv2.LINE_AA

# add shadow effect first
cv2.putText(img, text, (org[0]+2, org[1]+2), font, fontScale, (0, 0, 0), thickness, lineType)

# add text to the image
cv2.putText(img, text, org, font, fontScale, color, thickness, lineType)

# show the image
cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

执行上述代码,会显示出一张白色背景,并在中央位置添加了一个带有阴影效果的文本。

四、总结

我们可以看到,cv2.puttext是OpenCV库中一个非常实用的图像绘制方法,能够在图像上绘制出各种文字效果。在实际的开发工作中,我们可以利用cv2.puttext快速完成文字的添加操作,从而提高开发效率。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/279797.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-20 15:05
下一篇 2024-12-20 15:05

相关推荐

  • index.html怎么打开 – 详细解析

    一、index.html怎么打开看 1、如果你已经拥有了index.html文件,那么你可以直接使用任何一个现代浏览器打开index.html文件,比如Google Chrome、…

    编程 2025-04-25
  • Resetful API的详细阐述

    一、Resetful API简介 Resetful(REpresentational State Transfer)是一种基于HTTP协议的Web API设计风格,它是一种轻量级的…

    编程 2025-04-25
  • 关键路径的详细阐述

    关键路径是项目管理中非常重要的一个概念,它通常指的是项目中最长的一条路径,它决定了整个项目的完成时间。在这篇文章中,我们将从多个方面对关键路径做详细的阐述。 一、概念 关键路径是指…

    编程 2025-04-25
  • neo4j菜鸟教程详细阐述

    一、neo4j介绍 neo4j是一种图形数据库,以实现高效的图操作为设计目标。neo4j使用图形模型来存储数据,数据的表述方式类似于实际世界中的网络。neo4j具有高效的读和写操作…

    编程 2025-04-25
  • AXI DMA的详细阐述

    一、AXI DMA概述 AXI DMA是指Advanced eXtensible Interface Direct Memory Access,是Xilinx公司提供的基于AMBA…

    编程 2025-04-25
  • c++ explicit的详细阐述

    一、explicit的作用 在C++中,explicit关键字可以在构造函数声明前加上,防止编译器进行自动类型转换,强制要求调用者必须强制类型转换才能调用该函数,避免了将一个参数类…

    编程 2025-04-25
  • HTMLButton属性及其详细阐述

    一、button属性介绍 button属性是HTML5新增的属性,表示指定文本框拥有可供点击的按钮。该属性包括以下几个取值: 按钮文本 提交 重置 其中,type属性表示按钮类型,…

    编程 2025-04-25
  • crontab测试的详细阐述

    一、crontab的概念 1、crontab是什么:crontab是linux操作系统中实现定时任务的程序,它能够定时执行与系统预设时间相符的指定任务。 2、crontab的使用场…

    编程 2025-04-25
  • Vim使用教程详细指南

    一、Vim使用教程 Vim是一个高度可定制的文本编辑器,可以在Linux,Mac和Windows等不同的平台上运行。它具有快速移动,复制,粘贴,查找和替换等强大功能,尤其在面对大型…

    编程 2025-04-25
  • 网站测试工具的详细阐述

    一、测试工具的概述 在软件开发的过程中,测试工具是一个非常重要的环节。测试工具可以快速、有效地检测软件中的缺陷,提高软件的质量和稳定性。与此同时,测试工具还可以提高软件开发的效率,…

    编程 2025-04-25

发表回复

登录后才能评论