• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1## 3.3 图像Crop
2
3### 3.3.1 VPSS
4
5VPSS(Video Process Sub-System)是视频处理子系统,VPSS对输入图像进行裁剪,属于组裁剪的范畴,SDK封装了相关接口,如:设置VPSS CROP属性HI_MPI_VPSS_SetGrpCrop、获取 VPSS CROP 功能属性HI_MPI_VPSS_GetGrpCrop
6
7SDK中实现路径在**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/include中**的mpi_vpss.h里面,如下图所示:
8
9![](./figures/hispark_taurus_resize_crop_sample/031%E5%A4%B4%E6%96%87%E4%BB%B6.png)
10
11![](./figures/hispark_taurus_resize_crop_sample/032VPSS%E5%8A%9F%E8%83%BD%E6%8E%A5%E5%8F%A3.png)
12
13对HI_MPI_VPSS_SetGrpCrop API接口阐述如下:
14
15**HI_MPI_VPSS_SetGrpCrop**
16
17【语法】
18
19* HI_S32 HI_MPI_VPSS_SetGrpCrop(VPSS_GRP VpssGrp, const VPSS_CROP_INFO_S *pstCropInfo);
20
21【参数】
22
23![](./figures/hispark_taurus_resize_crop_sample/033HI_MPI_VPSS_SetGrpCrop%E5%8F%82%E6%95%B0.png)
24
25【返回值】
26
27![](./figures/hispark_taurus_resize_crop_sample/034HI_MPI_VPSS_SetGrpCrop%E8%BF%94%E5%9B%9E%E5%80%BC.png)
28
29【需求】
30
31* 头文件:hi_comm_vpss.hmpi_vpss.h
32
33* 库文件:libmpi.a
34
35【注意】
36
37* GROUP 必须已创建
38
39* 通道 AUTO 模式下不支持。
40
41* 如果裁剪区域超出图像范围,丢弃超出部分图像,优先保证裁剪坐标与所设置的 参数相同。
42
43* 通道裁剪不能与幅形比同时开启。
44
45* 通道做任意角度旋转、LDC、Spread 处理或者其绑定的扩展通道开启鱼眼校正时 不支持再做通道裁剪。
46
47* 物理通道做裁剪时,绝对模式裁剪要求配置的裁剪坐标和宽高 2 像素对齐,相对 模式裁剪计算出的坐标和宽高自动向下 2 像素对齐;扩展通道做裁剪时,如果处 理的是 8bit YUV,裁剪坐标和宽高要求 2 像素对齐,如果处理的是 10bit YUV, 裁剪 x 坐标会自适应向下做 4 对齐。
48
49* 扩展通道先做裁剪,后做缩放。
50
51对HI_MPI_VPSS_GetChnCrop API接口阐述如下:
52
53**HI_MPI_VPSS_GetChnCrop**
54
55【语法】
56
57* HI_S32 HI_MPI_VPSS_GetChnCrop(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, VPSS_CROP_INFO_S *pstCropInfo);
58
59【参数】
60
61![](./figures/hispark_taurus_resize_crop_sample/035HI_MPI_VPSS_GetChnCrop%E5%8F%82%E6%95%B0.png)
62
63【返回值】
64
65![](./figures/hispark_taurus_resize_crop_sample/036HI_MPI_VPSS_GetChnCrop%E8%BF%94%E5%9B%9E%E5%80%BC.png)
66
67【需求】
68
69* 头文件:hi_comm_vpss.hmpi_vpss.h
70
71* 库文件:libmpi.a
72
73【注意】
74
75* GROUP必须已经创建
76
77注:关于VPSS实现组裁剪API接口的详细定义,请参考**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》文档中的第5章节视频处理子系统中的5.3章节API参考部分。
78
79### 3.3.2 VGS
80
81扩展通道裁剪,VPSS调用VGS对扩展通道的输出图像进行裁剪,VPSS扩展通道调用VGS做裁剪、缩放时,需要额外申请一块临时buffer,用于存放处理后的图像,因此也需要一次额外读写DDR。关于Hi3516DV300中的VPSS数据流图如下:
82
83![](./figures/hispark_taurus_resize_crop_sample/037VPSS%E6%95%B0%E6%8D%AE%E6%B5%81%E5%9B%BE.png)
84
85其SDK封装了相关接口,如:设置VPSS通道裁剪功能属性HI_MPI_VPSS_SetChnCrop、获取VPSS通道裁剪功能属性HI_MPI_VPSS_GetChnCrop
86
87SDK中实现路径在**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/include中**的mpi_vpss.h里面,如下图所示:
88
89![](./figures/hispark_taurus_resize_crop_sample/038vpss%E6%8E%A5%E5%8F%A3.png)
90
91对HI_MPI_VPSS_SetChnCrop API接口阐述如下:
92
93**HI_MPI_VPSS_SetChnCrop**
94
95【语法】
96
97* HI_S32 HI_MPI_VPSS_SetChnCrop(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, const VPSS_CROP_INFO_S *pstCropInfo);
98
99【参数】
100
101![](./figures/hispark_taurus_resize_crop_sample/039HI_MPI_VPSS_SetChnCrop%E5%8F%82%E6%95%B0.png)
102
103【返回值】
104
105![](./figures/hispark_taurus_resize_crop_sample/040HI_MPI_VPSS_SetChnCrop%E8%BF%94%E5%9B%9E%E5%80%BC.png)
106
107【需求】
108
109* 头文件:hi_comm_vpss.hmpi_vpss.h
110
111* 库文件:libmpi.a
112
113【注意】
114
115* GROUP 必须已创建。
116
117* 通道AUTO模式下不支持。
118
119* 如果裁剪区域超出图像范围,丢弃超出部分图像,优先保证裁剪坐标与所设置的参数相同。
120
121* 通道裁剪不能与幅形比同时开启。
122
123* 通道做任意角度旋转、LDC、Spread 处理或者其绑定的扩展通道开启鱼眼校正时不支持再做通道裁剪。
124
125* 物理通道做裁剪时,绝对模式裁剪要求配置的裁剪坐标和宽高 2 像素对齐,相对模式裁剪计算出的坐标和宽高自动向下 2 像素对齐;扩展通道做裁剪时,如果处理的是 8bit YUV,裁剪坐标和宽高要求 2 像素对齐,如果处理的是 10bit YUV,裁剪 x 坐标会自适应向下做 4 对齐。
126
127* 扩展通道先做裁剪,后做缩放。
128
129对HI_MPI_VPSS_GetChnCrop API接口阐述如下:
130
131**HI_MPI_VPSS_GetChnCrop**
132
133【语法】
134
135* HI_S32 HI_MPI_VPSS_GetChnCrop(VPSS_GRP VpssGrp, VPSS_CHN VpssChn, VPSS_CROP_INFO_S *pstCropInfo);
136
137【参数】
138
139![](./figures/hispark_taurus_resize_crop_sample/041HI_MPI_VPSS_GetChnCrop%E5%8F%82%E6%95%B0.png)
140
141【返回值】
142
143![](./figures/hispark_taurus_resize_crop_sample/042HI_MPI_VPSS_GetChnCrop%E8%BF%94%E5%9B%9E%E5%80%BC.png)
144
145【需求】
146
147* 头文件:hi_comm_vpss.hmpi_vpss.h
148
149* 库文件:libmpi.a
150
151【注意】
152
153* GROUP 必须已创建。
154
155注:关于VPSS实现扩展通道裁剪API接口的详细定义,请参考**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/doc中**的《HiMPP媒体处理软件 V4.0 开发参考.pdf》文档第5章节视频处理子系统中的5.3章节API参考部分。
156
157### 3.3.3 IVE
158
159IVE(IntelligentVideoEngine)是上海海思媒体处理芯片智能分析系统中的硬件加速模块。用户基于IVE开发智能分析方案可以加速智能分析,降低CPU占用。当前IVE提供的算子可以支撑开发视频诊断、周界防范等智能分析方案。
160
161通过IVE来可实现图像的crop,可通过**源码的device/soc/hisilicon/hi3516dv300/sdk_linux/sample/taurus/resize_crop/smp/smp_resize_crop.c文件中**的ImgYuvCrop接口进行实现,如下图所示:
162
163![](./figures/hispark_taurus_resize_crop_sample/043ImgYuvCrop.png)
164
165分析该接口,其支持对yuv图片的格式进行crop,且支持crop之后的图片width和height需大于等于32像素,其通过IVE对图像进行crop。
166
167### 3.3.4 Crop sample
168
169* 以IVE为例,讲述如何跑通crop,该部分请参考[ resize_crop操作指导](../resize_crop/README.md)的Crop部分的内容。
170
171