|
@@ -1,31 +1,30 @@
|
|
|
-# coco_tools说明
|
|
|
+# coco_tools使用说明
|
|
|
|
|
|
-## 0.工具说明
|
|
|
+## 1 工具说明
|
|
|
|
|
|
-coco_tools是PaddleRS中,用coco类标注文件处理的工具集,详见[tools/coco_tools/](tools/coco_tools/)。
|
|
|
+coco_tools是PaddleRS提供的用于处理COCO格式标注文件的工具集,位于`tools/coco_tools/`目录。由于[pycocotools库](https://pypi.org/project/pycocotools/)在部分环境下无法安装,PaddleRS提供coco_tools作为替代,进行一些简单的文件处理工作。
|
|
|
|
|
|
-由于pycocotools库在部分环境下无法安装,因此可以使用coco_tools进行一些简单的文件处理工作。
|
|
|
-
|
|
|
-## 1.文件说明
|
|
|
+## 2 文件说明
|
|
|
|
|
|
目前coco_tools共有6个文件,各文件及其功能如下:
|
|
|
|
|
|
-* json_InfoShow: 打印json文件中各个字典的基本信息;
|
|
|
-* json_ImgSta: 统计json文件中的图像信息,生成统计表、统计图;
|
|
|
-* json_AnnoSta: 统计json文件中的标注信息,生成统计表、统计图;
|
|
|
-* json_Img2Json: 统计test集图像,生成json文件;
|
|
|
-* json_Split: json文件拆分,划分为train set、val set
|
|
|
-* json_Merge: json文件合并,将多个json合并为1个json
|
|
|
+- `json_InfoShow.py`: 打印json文件中各个字典的基本信息;
|
|
|
+- `json_ImgSta.py`: 统计json文件中的图像信息,生成统计表、统计图;
|
|
|
+- `json_AnnoSta.py`: 统计json文件中的标注信息,生成统计表、统计图;
|
|
|
+- `json_Img2Json.py`: 统计test集图像,生成json文件;
|
|
|
+- `json_Split.py`: 将json文件中的内容划分为train set和val set;
|
|
|
+- `json_Merge.py`: 将多个json文件合并为1个。
|
|
|
|
|
|
-## 2. 应用案例说明
|
|
|
+## 3 使用示例
|
|
|
|
|
|
-通过本教程,你将快速学会PaddleRS中关于coco_tools的API调用,帮助你完成coco类数据集的信息统计、文件操作。
|
|
|
+## 3.1 示例数据集
|
|
|
|
|
|
-## 2.1 示例数据集
|
|
|
+本文档以COCO 2017数据集作为示例数据进行演示。您可以在以下链接下载该数据集:
|
|
|
|
|
|
-本文档以COCO 2017数据集作为示例数据,进行演示。COCO 2017 [官方下载链接](https://cocodataset.org/#download)、[aistudio备份链接](https://aistudio.baidu.com/aistudio/datasetdetail/7122)
|
|
|
+- [官方下载链接](https://cocodataset.org/#download)
|
|
|
+- [aistudio备份链接](https://aistudio.baidu.com/aistudio/datasetdetail/7122)
|
|
|
|
|
|
-COCO 2017 文件结构
|
|
|
+下载完成后,为方便后续使用,您可以将`coco_tools`目录从PaddleRS项目中复制或链接到数据集目录中。完整的数据集目录结构如下:
|
|
|
|
|
|
```
|
|
|
./COCO2017/ # 数据集根目录
|
|
@@ -48,15 +47,13 @@ COCO 2017 文件结构
|
|
|
| |--...
|
|
|
```
|
|
|
|
|
|
-## 2.2 打印json信息
|
|
|
-
|
|
|
-使用json_InfoShow.py,可以打印`instances_val2017.json`中的各个key, 并输出value中的前n个元素,从而帮助快速了解标注信息。
|
|
|
+## 3.2 打印json信息
|
|
|
|
|
|
-尤其是对于coco格式标注数据中的image、annotation,可以查看其具体的标注格式
|
|
|
+使用`json_InfoShow.py`可以打印json文件中的各个键值对的key, 并输出value中排列靠前的元素,从而帮助您快速了解标注信息。对于COCO格式标注数据而言,您应该特别留意`'image'`和`'annotation'`字段的内容。
|
|
|
|
|
|
-### 2.2.1 命令演示
|
|
|
+### 3.2.1 命令演示
|
|
|
|
|
|
-可以执行如下命令,打印`instances_val2017.json`信息
|
|
|
+执行如下命令,打印`instances_val2017.json`中的信息:
|
|
|
|
|
|
```
|
|
|
python ./coco_tools/json_InfoShow.py \
|
|
@@ -64,16 +61,16 @@ python ./coco_tools/json_InfoShow.py \
|
|
|
--show_num 5
|
|
|
```
|
|
|
|
|
|
-### 2.2.2 参数说明
|
|
|
+### 3.2.2 参数说明
|
|
|
|
|
|
|
|
|
-| 参数名 | 含义 | 默认值 |
|
|
|
-| ------------- | ------------------------------ | -------- |
|
|
|
-| --json_path | 需要统计的json文件路径 | |
|
|
|
-| --show_num | (可选)输出value元素的个数 | 5 |
|
|
|
-| --Args_show | (可选)是否打印输入的参数信息 | True |
|
|
|
+| 参数名 | 含义 | 默认值 |
|
|
|
+| ------------- | ------------------------------------| -------- |
|
|
|
+| `--json_path` | 需要统计的json文件路径 | |
|
|
|
+| `--show_num` | (可选)输出value中排列靠前的元素的个数 | `5` |
|
|
|
+| `--Args_show` | (可选)是否打印输入参数信息 | `True` |
|
|
|
|
|
|
-### 2.2.3 结果展示
|
|
|
+### 3.2.3 结果展示
|
|
|
|
|
|
执行上述命令后,输出结果如下:
|
|
|
|
|
@@ -154,31 +151,28 @@ contributor : COCO Consortium
|
|
|
|
|
|
```
|
|
|
|
|
|
-### 2.2.4 结果说明
|
|
|
+### 3.2.4 结果说明
|
|
|
|
|
|
-`instances_val2017.json`的key有5个,分别为
|
|
|
+`instances_val2017.json`的key有5个,分别为:
|
|
|
|
|
|
```
|
|
|
'info', 'licenses', 'images', 'annotations', 'categories'
|
|
|
```
|
|
|
+其中,
|
|
|
|
|
|
-info键,对应的值为字典,共有6个键值对,输出展示了前5对
|
|
|
-
|
|
|
-licenses键,对应的值为列表,共有8个元素,输出展示了前5个
|
|
|
-
|
|
|
-images键,对应的值为列表,共有5000个元素,输出展示了前5个
|
|
|
-
|
|
|
-annotations键,对应的值为列表,共有36781个元素,输出展示了前5个
|
|
|
+- `info`键对应的值为字典,共有6个键值对,输出展示了前5对;
|
|
|
+- `licenses`键对应的值为列表,共有8个元素,输出展示了前5个;
|
|
|
+- `images`键对应的值为列表,共有5000个元素,输出展示了前5个;
|
|
|
+- `annotations`键对应的值为列表,共有36781个元素,输出展示了前5个;
|
|
|
+- `categories`键对应的值为列表,共有80个元素,输出展示了前5个。
|
|
|
|
|
|
-categories键,对应的值为列表,共有80个元素,输出展示了前5个
|
|
|
+## 3.3 统计图像信息
|
|
|
|
|
|
-## 2.3 统计图像信息
|
|
|
+使用`json_ImgSta.py`可以从`instances_val2017.json`中快速提取图像信息,生成csv表格,并生成统计图。
|
|
|
|
|
|
-使用json_ImgSta.py,可以从`instances_val2017.json`中,快速提取图像信息,生成csv表格,并生成统计图
|
|
|
+### 3.3.1 命令演示
|
|
|
|
|
|
-### 2.3.1 命令演示
|
|
|
-
|
|
|
-可以执行如下命令,打印`instances_val2017.json`信息
|
|
|
+执行如下命令,打印`instances_val2017.json`信息:
|
|
|
|
|
|
```
|
|
|
python ./coco_tools/json_ImgSta.py \
|
|
@@ -188,19 +182,18 @@ python ./coco_tools/json_ImgSta.py \
|
|
|
--png_shapeRate_path=./img_sta/images_shapeRate.png
|
|
|
```
|
|
|
|
|
|
-### 2.3.2 参数说明
|
|
|
-
|
|
|
+### 3.3.2 参数说明
|
|
|
|
|
|
-| 参数名 | 含义 | 默认值 |
|
|
|
+| 参数名 | 含义 | 默认值 |
|
|
|
| ---------------------- | --------------------------------------------------------------------- | -------- |
|
|
|
-| --json_path | 需要统计的json文件路径 | |
|
|
|
-| --csv_path | (可选)统计表格保存路径 | None |
|
|
|
-| --png_shape_path | (可选)png图片保存路径,图片内容为所有图像shape的二维分布 | 5 |
|
|
|
-| --png_shapeRate_path | (可选)png图片保存路径,图片内容为所有图像shape比例(宽/高)的一维分布 | 5 |
|
|
|
-| --image_keyname | (可选)json文件中,图像key的名称 | images |
|
|
|
-| --Args_show | (可选)是否打印输入的参数信息 | True |
|
|
|
+| `--json_path` | 需要统计的json文件路径 | |
|
|
|
+| `--csv_path` | (可选)统计表格保存路径 | `None` |
|
|
|
+| `--png_shape_path` | (可选)png图片保存路径,图片内容为所有图像shape的二维分布 | `5` |
|
|
|
+| `--png_shapeRate_path` | (可选)png图片保存路径,图片内容为所有图像shape比例(宽/高)的一维分布 | `5` |
|
|
|
+| `--image_keyname` | (可选)json文件中,图像所对应的key |`'images'`|
|
|
|
+| `--Args_show` | (可选)是否打印输入参数信息 |`True` |
|
|
|
|
|
|
-### 2.3.3 结果展示
|
|
|
+### 3.3.3 结果展示
|
|
|
|
|
|
执行上述命令后,输出结果如下:
|
|
|
|
|
@@ -233,18 +226,19 @@ csv save to ./img_sta/images.csv
|
|
|
|
|
|
保存的图片内容:
|
|
|
|
|
|
-所有图像shape的二维分布
|
|
|
+所有图像shape的二维分布:
|
|
|

|
|
|
-所有图像shape比例(宽/高)的一维分布
|
|
|
+
|
|
|
+所有图像shape比例(宽/高)的一维分布:
|
|
|

|
|
|
|
|
|
-## 2.4 统计目标检测标注框信息
|
|
|
+## 3.4 统计目标检测标注框信息
|
|
|
|
|
|
-使用json_AnnoSta.py,可以从`instances_val2017.json`中,快速提取图像信息,生成csv表格,并生成统计图
|
|
|
+使用`json_AnnoSta.py`,可以从`instances_val2017.json`中快速提取标注信息,生成csv表格,并生成统计图。
|
|
|
|
|
|
-### 2.4.1 命令演示
|
|
|
+### 3.4.1 命令演示
|
|
|
|
|
|
-可以执行如下命令,打印`instances_val2017.json`信息
|
|
|
+执行如下命令,打印`instances_val2017.json`信息:
|
|
|
|
|
|
```
|
|
|
python ./coco_tools/json_AnnoSta.py \
|
|
@@ -259,25 +253,24 @@ python ./coco_tools/json_AnnoSta.py \
|
|
|
--get_relative=True
|
|
|
```
|
|
|
|
|
|
-### 2.4.2 参数说明
|
|
|
-
|
|
|
+### 3.4.2 参数说明
|
|
|
|
|
|
-| 参数名 | 含义 | 默认值 |
|
|
|
+| 参数名 | 含义 | 默认值 |
|
|
|
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------- |
|
|
|
-| --json_path | (可选)需要统计的json文件路径 | |
|
|
|
-| --csv_path | (可选)统计表格保存路径 | None |
|
|
|
-| --png_shape_path | (可选)png图片保存路径,图片内容为所有目标检测框shape的二维分布 | None |
|
|
|
-| --png_shapeRate_path | (可选)png图片保存路径,图片内容为所有目标检测框shape比例(宽/高)的一维分布 | None |
|
|
|
-| --png_pos_path | (可选)png图片保存路径,图片内容为所有目标检测框左上角坐标的二维分布 | None |
|
|
|
-| --png_posEnd_path | (可选)png图片保存路径,图片内容为所有目标检测框右下角坐标的二维分布 | None |
|
|
|
-| --png_cat_path | (可选)png图片保存路径,图片内容为各个类别的对象数量分布 | None |
|
|
|
-| --png_objNum_path | (可选)png图片保存路径,图片内容为单个图像中含有标注对象的数量分布 | None |
|
|
|
-| --get_relative | (可选)是否生成图像目标检测框shape、目标检测框左上角坐标、右下角坐标的相对比例值<br />(横轴坐标/图片长,纵轴坐标/图片宽) | None |
|
|
|
-| --image_keyname | (可选)json文件中,图像key的名称 | images |
|
|
|
-| --anno_keyname | (可选)json文件中,图像anno的名称 | annotations |
|
|
|
-| --Args_show | (可选)是否打印输入的参数信息 | True |
|
|
|
-
|
|
|
-### 2.4.3 结果展示
|
|
|
+| `--json_path` | (可选)需要统计的json文件路径 | |
|
|
|
+| `--csv_path` | (可选)统计表格保存路径 | `None` |
|
|
|
+| `--png_shape_path` | (可选)png图片保存路径,图片内容为所有目标检测框shape的二维分布 | `None` |
|
|
|
+| `--png_shapeRate_path` | (可选)png图片保存路径,图片内容为所有目标检测框shape比例(宽/高)的一维分布 | `None` |
|
|
|
+| `--png_pos_path` | (可选)png图片保存路径,图片内容为所有目标检测框左上角坐标的二维分布 | `None` |
|
|
|
+| `--png_posEnd_path` | (可选)png图片保存路径,图片内容为所有目标检测框右下角坐标的二维分布 | `None` |
|
|
|
+| `--png_cat_path` | (可选)png图片保存路径,图片内容为各个类别的对象数量分布 | `None` |
|
|
|
+| `--png_objNum_path` | (可选)png图片保存路径,图片内容为单个图像中含有标注对象的数量分布 | `None` |
|
|
|
+| `--get_relative` | (可选)是否生成图像目标检测框shape、目标检测框左上角坐标、右下角坐标的相对比例值<br />(横轴坐标/图片长,纵轴坐标/图片宽) | `None` |
|
|
|
+| `--image_keyname` | (可选)json文件中,图像所对应的key | `'images'` |
|
|
|
+| `--anno_keyname` | (可选)json文件中,标注所对应的key | `'annotations'`|
|
|
|
+| `--Args_show` | (可选)是否打印输入参数信息 | `True` |
|
|
|
+
|
|
|
+### 3.4.3 结果展示
|
|
|
|
|
|
执行上述命令后,输出结果如下:
|
|
|
|
|
@@ -315,49 +308,49 @@ csv save to ./anno_sta/annos.csv
|
|
|
|
|
|

|
|
|
|
|
|
-所有目标检测框shape的二维分布:
|
|
|
+所有目标检测框shape的二维分布:
|
|
|
|
|
|

|
|
|
|
|
|
-所有目标检测框shape在图像中相对比例的二维分布:
|
|
|
+所有目标检测框shape在图像中相对比例的二维分布:
|
|
|
|
|
|

|
|
|
|
|
|
-所有目标检测框shape比例(宽/高)的一维分布:
|
|
|
+所有目标检测框shape比例(宽/高)的一维分布:
|
|
|
|
|
|

|
|
|
|
|
|
-所有目标检测框左上角坐标的二维分布:
|
|
|
+所有目标检测框左上角坐标的二维分布:
|
|
|
|
|
|

|
|
|
|
|
|
-所有目标检测框左上角坐标的相对比例值的二维分布:
|
|
|
+所有目标检测框左上角坐标的相对比例值的二维分布:
|
|
|
|
|
|

|
|
|
|
|
|
-所有目标检测框右下角坐标的二维分布:
|
|
|
+所有目标检测框右下角坐标的二维分布:
|
|
|
|
|
|

|
|
|
|
|
|
-所有目标检测框右下角坐标的相对比例值的二维分布:
|
|
|
+所有目标检测框右下角坐标的相对比例值的二维分布:
|
|
|
|
|
|

|
|
|
|
|
|
-各个类别的对象数量分布
|
|
|
+各个类别的对象数量分布:
|
|
|
|
|
|

|
|
|
|
|
|
-单个图像中含有标注对象的数量分布
|
|
|
+单个图像中含有标注对象的数量分布:
|
|
|
|
|
|

|
|
|
|
|
|
-## 2.5 统计图像信息生成json
|
|
|
+## 3.5 统计图像信息生成json
|
|
|
|
|
|
-使用json_Test2Json.py,可以根据`test2017`中的文件信息与训练集json文件,快速提取图像信息,生成json文件
|
|
|
+使用`json_Test2Json.py`,可以根据`test2017`中的文件信息与训练集json文件快速提取图像信息,生成测试集json文件。
|
|
|
|
|
|
-### 2.5.1 命令演示
|
|
|
+### 3.5.1 命令演示
|
|
|
|
|
|
-可以执行如下命令,统计并生成`test2017`信息
|
|
|
+执行如下命令,统计并生成`test2017`信息:
|
|
|
|
|
|
```
|
|
|
python ./coco_tools/json_Img2Json.py \
|
|
@@ -366,19 +359,19 @@ python ./coco_tools/json_Img2Json.py \
|
|
|
--json_test_path=./test.json
|
|
|
```
|
|
|
|
|
|
-### 2.5.2 参数说明
|
|
|
+### 3.5.2 参数说明
|
|
|
|
|
|
|
|
|
-| 参数名 | 含义 | 默认值 |
|
|
|
+| 参数名 | 含义 | 默认值 |
|
|
|
| ------------------- | ---------------------------------------- | ------------ |
|
|
|
-| --test_image_path | 需要统计的图像文件夹路径 | |
|
|
|
-| --json_train_path | 用于参考的训练集json文件路径 | |
|
|
|
-| --json_test_path | 生成的测试集json文件路径 | |
|
|
|
-| --image_keyname | (可选)json文件中,图像key的名称 | images |
|
|
|
-| --cat_keyname | (可选)json文件中,图像categories的名称 | categories |
|
|
|
-| --Args_show | (可选)是否打印输入的参数信息 | True |
|
|
|
+| `--test_image_path` | 需要统计的图像目录路径 | |
|
|
|
+| `--json_train_path` | 用于参考的训练集json文件路径 | |
|
|
|
+| `--json_test_path` | 生成的测试集json文件路径 | |
|
|
|
+| `--image_keyname` | (可选)json文件中,图像对应的key | `'images'` |
|
|
|
+| `--cat_keyname` | (可选)json文件中,类别对应的key | `'categories'`|
|
|
|
+| `--Args_show` | (可选)是否打印输入参数信息 | `True` |
|
|
|
|
|
|
-### 2.5.3 结果展示
|
|
|
+### 3.5.3 结果展示
|
|
|
|
|
|
执行上述命令后,输出结果如下:
|
|
|
|
|
@@ -438,13 +431,13 @@ json keys: dict_keys(['images', 'categories'])
|
|
|
...
|
|
|
```
|
|
|
|
|
|
-## 2.6 json文件拆分
|
|
|
+## 3.6 json文件拆分
|
|
|
|
|
|
-使用json_Split.py,可以拆分`instances_val2017.json`文件
|
|
|
+使用`json_Split.py`,可以将`instances_val2017.json`文件拆分为2个子集。
|
|
|
|
|
|
-### 2.6.1 命令演示
|
|
|
+### 3.6.1 命令演示
|
|
|
|
|
|
-可以执行如下命令,拆分`instances_val2017.json`文件
|
|
|
+执行如下命令,拆分`instances_val2017.json`文件:
|
|
|
|
|
|
```
|
|
|
python ./coco_tools/json_Split.py \
|
|
@@ -453,22 +446,22 @@ python ./coco_tools/json_Split.py \
|
|
|
--json_val_path=./instances_val2017_val.json
|
|
|
```
|
|
|
|
|
|
-### 2.6.2 参数说明
|
|
|
+### 3.6.2 参数说明
|
|
|
|
|
|
|
|
|
-| 参数名 | 含义 | 默认值 |
|
|
|
+| 参数名 | 含义 | 默认值 |
|
|
|
| -------------------- | ------------------------------------------------------------------------------------- | ------------ |
|
|
|
-| --json_all_path | 需要拆分的json文件路径 | |
|
|
|
-| --json_train_path | 生成的train部分json文件 | |
|
|
|
-| --json_val_path | 生成的val部分json文件 | |
|
|
|
-| --val_split_rate | (可选)拆分过程中,val集文件的比例 | 0.1 |
|
|
|
-| --val_split_num | (可选)拆分过程中,val集文件的数量,<br />如果设置了该参数,则val_split_rate参数失效 | None |
|
|
|
-| --keep_val_inTrain | (可选)拆分过程中,是否在train中仍然保留val部分 | False |
|
|
|
-| --image_keyname | (可选)json文件中,图像key的名称 | images |
|
|
|
-| --cat_keyname | (可选)json文件中,图像categories的名称 | categories |
|
|
|
-| --Args_show | (可选)是否打印输入的参数信息 | True |
|
|
|
-
|
|
|
-### 2.6.3 结果展示
|
|
|
+| `--json_all_path` | 需要拆分的json文件路径 | |
|
|
|
+| `--json_train_path` | 生成的train部分json文件 | |
|
|
|
+| `--json_val_path` | 生成的val部分json文件 | |
|
|
|
+| `--val_split_rate` | (可选)拆分过程中,val集文件的比例 | `0.1` |
|
|
|
+| `--val_split_num` | (可选)拆分过程中,val集文件的数量,<br />如果设置了该参数,则`--val_split_rate`参数失效 | `None` |
|
|
|
+| `--keep_val_inTrain` | (可选)拆分过程中,是否在train中仍然保留val部分 | `False` |
|
|
|
+| `--image_keyname` | (可选)json文件中,图像对应的key | `'images'` |
|
|
|
+| `--cat_keyname` | (可选)json文件中,类别对应的key | `'categories'`|
|
|
|
+| `--Args_show` | (可选)是否打印输入参数信息 | `'True'` |
|
|
|
+
|
|
|
+### 3.6.3 结果展示
|
|
|
|
|
|
执行上述命令后,输出结果如下:
|
|
|
|
|
@@ -492,13 +485,13 @@ image total 5000, train 4500, val 500
|
|
|
anno total 36781, train 33119, val 3662
|
|
|
```
|
|
|
|
|
|
-## 2.7 json文件合并
|
|
|
+## 3.7 json文件合并
|
|
|
|
|
|
-使用json_Merge.py,可以合并`instances_train2017.json、instances_val2017.json`文件
|
|
|
+使用`json_Merge.py`,可以合并2个json文件。
|
|
|
|
|
|
-### 2.7.1 命令演示
|
|
|
+### 3.7.1 命令演示
|
|
|
|
|
|
-可以执行如下命令,合并`instances_train2017.json、instances_val2017.json`文件
|
|
|
+执行如下命令,合并`instances_train2017.json`与`instances_val2017.json`:
|
|
|
|
|
|
```
|
|
|
python ./coco_tools/json_Merge.py \
|
|
@@ -507,18 +500,18 @@ python ./coco_tools/json_Merge.py \
|
|
|
--save_path=./instances_trainval2017.json
|
|
|
```
|
|
|
|
|
|
-### 2.7.2 参数说明
|
|
|
+### 3.7.2 参数说明
|
|
|
|
|
|
|
|
|
-| 参数名 | 含义 | 默认值 |
|
|
|
+| 参数名 | 含义 | 默认值 |
|
|
|
| -------------- | ------------------------------- | --------------------------- |
|
|
|
-| --json1_path | 需要合并的json文件1路径 | |
|
|
|
-| --json2_path | 需要合并的json文件2路径 | |
|
|
|
-| --save_path | 生成的json文件 | |
|
|
|
-| --merge_keys | (可选)合并过程中需要合并的key | ['images', 'annotations'] |
|
|
|
-| --Args_show | (可选)是否打印输入的参数信息 | True |
|
|
|
+| `--json1_path` | 需要合并的json文件1路径 | |
|
|
|
+| `--json2_path` | 需要合并的json文件2路径 | |
|
|
|
+| `--save_path` | 生成的json文件 | |
|
|
|
+| `--merge_keys` | (可选)合并过程中需要合并的key | `['images', 'annotations']` |
|
|
|
+| `--Args_show` | (可选)是否打印输入参数信息 | `True` |
|
|
|
|
|
|
-### 2.7.3 结果展示
|
|
|
+### 3.7.3 结果展示
|
|
|
|
|
|
执行上述命令后,输出结果如下:
|
|
|
|