主要内容

本页采用了机器翻译。点击此处可查看英文原文。

insertText

在图像或视频中插入文字

说明

RGB = insertText(I,position,text) 将文本插入到真彩色或灰度图像中 I。该函数返回一张真彩色图像。

示例

RGB = insertText(I,position,numericValue) 将值插入到输入图像中。

示例

RGB = insertText(___,Name=Value) 支持上述语法中的任何输入参量组合,且可使用一个或多个名称-值参量指定选项。例如,FontColor="red" 会将插入的文本或值显示为红色。

示例

全部折叠

将图像读入工作区中。

I = imread("board.tif");

创建包含分数的文本字符串。

text_str = cell(3,1);
conf_val = [85.212 98.76 78.342]; 
for ii = 1:3
   text_str{ii} = ['Confidence: ' num2str(conf_val(ii), '%0.2f') '%'];
end

定义文本框的位置和颜色。

position = [23 373; 35 185; 77 107]; 
box_color = {"red","green","yellow"};

插入文本字符串及其对应的框色,并指定所有字符串的字号、不透明度和文字颜色。

RGB = insertText(I,position,text_str,FontSize=18,TextBoxColor=box_color, ...
    BoxOpacity=0.4,TextColor="white");

显示带有注解的图像。

figure
imshow(RGB)
title("Board")

Figure contains an axes object. The hidden axes object with title Board contains an object of type image.

将图像读入工作区中。

I = imread("peppers.png");

定义值及其 xy 坐标。

position =  [1 50; 100 50];
value = [555 pi];

以每个文本框的左下角为锚点,插入值。

RGB = insertText(I,position,value,AnchorPoint="LeftBottom");

显示已插入值后的图像。

figure
imshow(RGB)
title("Numeric Values")

Figure contains an axes object. The hidden axes object with title Numeric Values contains an object of type image.

将 Unicode 字符 U+014C 插入到图像中。

OWithMacron = native2unicode([hex2dec("C5") hex2dec("8C")],"UTF-8");
RGB = insertText(RGB,[256 50],OWithMacron,font="Roboto-Regular",TextBoxColor="white");

显示已插入 Unicode 字符的图像。

figure
imshow(RGB)
title("Numeric Values");

Figure contains an axes object. The hidden axes object with title Numeric Values contains an object of type image.

输入参数

全部折叠

输入图像,指定为 M×N×3 的真彩色图像或 M×N 的灰度图像。

数据类型: single | double | int16 | uint8 | uint16

Unicode 文本,指定为字符向量、字符串标量、包含 M 个字符向量元素的元胞数组,或包含 M 个字符串元素的字符串数组。Mposition 中指定的文本位置的数量。该函数将像素值覆盖为 text 的值。如果指定一个字符串或字符向量,该函数会将其用于 position 矩阵中的所有位置。大多数 Unicode 字体都包含 ASCII 字符。您可以使用一种字体显示非英语字符和英语字符,包括英语数字值。

数据类型: char | string | cell

数值文本,指定为数值标量或包含 M 个元素的数值向量。Mposition 中指定位置的数量。如果指定了一个标量值,该函数将对所有指定位置使用该值。该函数使用 sprintf 格式 '%0.5g' 将每个值转换为字符向量。

数据类型: numeric

插入文本的位置,以 M×2 矩阵形式指定。M 表示指定的文本位置数量,每一行指定文本框 AnchorPointxy-坐标。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

名称-值参数

全部折叠

将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

示例: insertText(I,position,text,Font="Calibri") 将字体样式设置为 Calibri

如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: insertText(I,position,text,"Font","Calibri") 将字体样式设置为 Calibri

文本的字体样式,指定为字符向量或字符串标量。字体必须是系统中已安装的可用 TrueType 字体之一。要获取系统中可用字体的列表,请在 MATLAB® 命令提示符下使用 listTrueTypeFonts 函数。

数据类型: char | string

字体大小,以像素为单位,指定为 [1, 200] 范围内的正整数。

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

字体颜色,可指定为简短颜色名称、颜色名称、颜色名称向量或包含 RGB 三元组的三列矩阵。

“支持的颜色表”中列出的 RGB 强度值范围为 [0, 1],但您必须指定符合所选数据类型范围的 RGB 三元组。例如,如果将该参量指定为由 uint8 值组成的矩阵,则必须将每个强度值转换为 [0, 255] 范围内的数值。要将所列的强度值转换为 uint8 数据类型,请使用代码 uint8(255*intensity),其中 intensity 是表格中列出的 RGB 三元组值。

您可以为每个字体字符串指定不同的颜色,也可以为所有字符串指定一种颜色。若要为所有标记指定一种颜色,请将 FontColor 作为颜色名称或 [R G B] 向量进行指定。

设定格式示例
为所有图形(或标记)指定一种颜色

简短颜色名称或颜色名称

"r"

"red"

RGB 三元组

[1 0 0]1-by-3 grid, with columns labeled r,g,b respectively.

为每个形状(或标记)指定一种颜色

颜色名称向量

["red","yellow","blue"]

由 RGB 三元组组成的三列矩阵

[1 0 0
 0 1 1
 1 0 1
 1 1 1]
M-by-3 grid, with columns labeled r,g,b respectively.

下表列出了支持的标记颜色。

颜色名称短名称RGB 三元组外观
"red""r"[1 0 0]

Sample of the color red

"green""g"[0 1 0]

Sample of the color green

"blue""b"[0 0 1]

Sample of the color blue

"cyan" "c"[0 1 1]

Sample of the color cyan

"magenta""m"[1 0 1]

Sample of the color magenta

"yellow""y"[1 1 0]

Sample of the color yellow

"black""k"[0 0 0]

Sample of the color black

"white""w"[1 1 1]

Sample of the color white

数据类型: logical | uint8 | uint16 | int16 | double | single

文本框颜色,可指定为简短颜色名称、颜色名称、颜色名称向量或包含 RGB 三元组的三列矩阵。

“支持的颜色表”中列出的 RGB 强度值范围为 [0, 1],但您必须指定符合所选数据类型范围的 RGB 三元组。例如,如果将该参量指定为由 uint8 值组成的矩阵,则必须将每个强度值转换为 [0, 255] 范围内的数值。要将所列的强度值转换为 uint8 数据类型,请使用代码 uint8(255*intensity),其中 intensity 是表格中列出的 RGB 三元组值。

您可以为每个字体字符串指定不同的颜色,也可以为所有字符串指定一种颜色。若要为所有字符串指定一种颜色,请将 FontColor 作为颜色名称或 [R G B] 向量进行指定。

数据类型: logical | uint8 | uint16 | int16 | double | single

文本标签框背景的透明度,以 [0, 1] 范围内的标量值指定。值为 0 时,标签文本框的背景将显示为完全透明;而值为 1 时,则显示为完全不透明。

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

文本框参考点,指定为以下值之一:

  • "LeftTop"

  • "LeftCenter"

  • "LeftBottom"

  • "CenterTop"

  • "Center"

  • "CenterBottom"

  • "RightTop"

  • "RightCenter"

  • "RightBottom"

锚点定义了在每个文本框上的相对位置。您可以将文本框定位到由 position 的相应行所指定的位置。例如,若要将文本框的中心定位在由 position 指定的 xy-坐标处,请将 AnchorPoint 设置为 Center

数据类型: char | string

输出参量

全部折叠

输出图像,以 M×N×3 真彩色图像的形式返回,其中插入了指定的文本。

限制

  • 如果输出图像中未显示某个字符,则说明指定的字体中不包含该字符。选择另一种字体。要查看系统中可用的字体列表,请在 MATLAB 命令提示符下输入 listTrueTypeFonts

  • 增加字体大小也会增加预处理时间和内存占用。

  • 对于某些复合字符,insertText 函数无法正常工作。例如,当一个与字符代码相对应的字形在渲染时会影响相邻字形的位置、形状或大小时,就无法插入文本。

扩展功能

全部展开

版本历史记录

在 R2013a 中推出

全部展开