VPI - 视觉编程接口

3.2 版本

Types.h
转到此文件的文档。
1 /*
2  * 版权所有 2019-2024 NVIDIA Corporation。保留所有权利。
3  *
4  * 致许可方的通知:
5  *
6  * 此源代码和/或文档(“许可交付物”)受
7  * 美国和国际版权法规定的 NVIDIA 知识产权保护。
8  * 国际版权法。
9  *
10  * 此处包含的许可交付物是 NVIDIA 的专有和
11  * 机密信息,并根据 NVIDIA 软件许可协议条款和条件提供,该协议由
12  * NVIDIA 和被许可方之间达成(“许可协议”),或以电子方式被
13  * 被许可方接受。尽管许可协议中有任何相反的条款或条件,但未经 NVIDIA 明确书面
14  * 同意,不得向任何第三方复制或披露许可交付物。
15  * 尽管许可协议中有任何相反的条款或条件,未经 NVIDIA 明确书面
16  * 同意,不得向任何第三方复制或披露许可交付物。
17  * 除非获得 NVIDIA 的明确书面同意,否则禁止。
18  *
19  * 尽管许可协议中有任何相反的条款或条件,NVIDIA 对这些许可交付物的
20  * 适用性不做任何陈述。
21  * 这些许可交付物“按原样”提供,不提供任何形式的明示或暗示保证。
22  * “按原样”提供,不附带任何明示或暗示的保证。
23  * NVIDIA 声明不对这些许可交付物做出任何保证,包括对适销性、非侵权性和
24  * 针对特定用途适用性的所有默示保证。
25  * 不侵权和特定用途的适用性的所有默示保证。
26  * 尽管许可协议中有任何相反的条款或条件,在任何情况下,NVIDIA 均不对任何
27  * 特殊、间接、附带或后果性损害负责。
28  * 特殊、间接、附带或后果性损害,或因使用、数据或利润损失而造成的任何
29  * 损害(无论是在合同诉讼、过失或其他侵权行为中)负责。
30  * 无论是在合同诉讼、疏忽或其他侵权行为中。
31  * 由于使用或与这些许可交付物的性能相关而引起的。
32  * 这些许可交付物。
33  *
34  * 美国政府最终用户。这些许可交付物是
35  * “商业项目”,该术语在 48 C.F.R. 2.101(1995 年 10 月)中定义,包括“商业计算机软件”和
36  * “商业计算机软件”和“商业计算机软件文档”,这些术语在 48 C.F.R. 12.212(1995 年 9 月)中使用,并且仅作为
37  * 商业计算机软件文档”,这些术语在 48
38  * C.F.R. 12.212(1995 年 9 月)中使用,并且仅作为商业最终项目提供给美国政府。
39  * 商业最终项目提供。符合 48 C.F.R. 12.212 和
40  * 48 C.F.R. 227.7202-1 至 227.7202-4(1995 年 6 月)的规定,所有
41  * 美国政府最终用户获得许可交付物,仅具有此处规定的权利。
42  * 仅获得此处规定的权利。
43  *
44  * 在个人和商业软件中使用许可交付物时,必须在用户文档和代码内部
45  * 注释中包含上述
46  * 免责声明和美国政府最终用户须知。
47  * 用户须知。
48  */
49 
56 #ifndef NV_VPI_TYPES_H
57 #define NV_VPI_TYPES_H
58 
59 #include "ImageFormat.h"
60 #include "Interpolation.h"
61 #include "PixelType.h"
62 #include "Status.h"
63 #include "Version.h"
64 
65 #include <stdint.h>
66 
67 #ifdef __cplusplus
68 extern "C" {
69 #endif
70 
90 typedef enum
91 {
92  VPI_BACKEND_CPU = (1ULL << 0),
93  VPI_BACKEND_CUDA = (1ULL << 1),
94  VPI_BACKEND_PVA = (1ULL << 2),
95  VPI_BACKEND_VIC = (1ULL << 3),
96  VPI_BACKEND_NVENC = (1ULL << 4),
97  VPI_BACKEND_OFA = (1ULL << 5),
98  VPI_BACKEND_INVALID = (1ULL << 15)
100 
102 #define VPI_BACKEND_TEGRA (VPI_BACKEND_VIC | VPI_BACKEND_NVENC | VPI_BACKEND_OFA)
103 
104 #define VPI_BACKEND_MASK ((VPI_BACKEND_INVALID << 1) - 1)
105 
107 #define VPI_BACKEND_ALL \
108  (VPI_BACKEND_CPU | VPI_BACKEND_CUDA | VPI_BACKEND_PVA | VPI_BACKEND_VIC | VPI_BACKEND_NVENC | VPI_BACKEND_OFA)
109 
136 #define VPI_EXCLUSIVE_STREAM_ACCESS (1ULL << 16)
137 
146 #define VPI_RESTRICT_MEM_USAGE (1ULL << 17)
147 
159 #define VPI_REQUIRE_BACKENDS (1ULL << 18)
160 
167 typedef void (*VPIParallelTask)(int taskId, int threadId, void *vpiData);
168 
191 typedef void (*VPIParallelForCallback)(VPIParallelTask task, int taskCount, void *vpiData, void *userData);
192 
198 typedef struct
199 {
207 
214 
218  void *userData;
220 
226 typedef void *VPINativeThreadHandle;
227 
232 typedef struct VPIArrayImpl *VPIArray;
233 
238 typedef struct VPIContextImpl *VPIContext;
239 
244 typedef struct VPIEventImpl *VPIEvent;
245 
250 typedef struct VPIStreamImpl *VPIStream;
251 
256 typedef struct VPIImageImpl *VPIImage;
257 
262 typedef struct VPIPyramidImpl *VPIPyramid;
263 
268 typedef struct VPIPayloadImpl *VPIPayload;
269 
276 typedef enum
277 {
285 
290 typedef enum
291 {
298 
303 
307 
319 typedef struct
320 {
321  float x;
322  float y;
323  float octave;
324  float layer;
326 
333 typedef struct
334 {
335  float x;
336  float y;
338 
345 typedef struct
346 {
347  uint32_t x;
348  uint32_t y;
350 
354 typedef enum
355 {
359 
363 #define VPI_BRIEF_DESCRIPTOR_ARRAY_LENGTH 32
364 
368 #define VPI_BRIEF_DESCRIPTOR_BIT_WIDTH (VPI_BRIEF_DESCRIPTOR_ARRAY_LENGTH * 8)
369 
373 typedef struct
374 {
378 
403 typedef struct
404 {
405  float mat3[3][3];
407 
423 typedef struct
424 {
426  float width,
429 
435 typedef struct
436 {
437  float left;
438  float top;
439  float width;
440  float height;
442 
444 typedef enum
445 {
455 
462 
472 
482 
487 typedef struct
488 {
491 
498 
505 
508  uint8_t reserved1, reserved2;
511 
515 typedef struct
516 {
519 
522 
526  int32_t seqIndex;
527 
530  float filterLR;
531 
535 
539  void *userData;
541 
547 typedef struct
548 {
550  float mean[4];
551 
553  float covariance[4][4];
554 
556  int32_t pixelCount;
557 
559  float sum[4];
560 
561 } VPIStats;
562 
566 #define VPI_MAX_MATCHES_PER_DESCRIPTOR (3)
567 
573 typedef struct
574 {
577 
580 
581 } VPIMatches;
582 
587 typedef struct VPIRectangleIRec
588 {
589  int32_t x, y; /*< 矩形原点位置 (x, y)。 */
590  int32_t width, height; /*< 矩形尺寸 (宽度, 高度)。 */
591 } VPIRectangleI;
592 
597 typedef enum
598 {
601 
604 
608 
613 typedef enum
614 {
618 
629 
633 
638 #define VPI_TERMINATION_CRITERIA_ITERATIONS (1u << 0)
639 #define VPI_TERMINATION_CRITERIA_EPSILON (1u << 1)
655 typedef float VPICameraIntrinsic[2][3];
656 
668 typedef float VPICameraExtrinsic[3][4];
669 
689 typedef float VPIPerspectiveTransform[3][3];
690 
695 typedef enum
696 {
699 
702 
704 
708 typedef enum
709 {
711  VPI_FLIP_HORIZ = 1U << 0,
712 
714  VPI_FLIP_VERT = 1U << 1,
715 
720 
722 
726 typedef enum
727 {
730 
733 
736 
738 
742 typedef enum
743 {
746 
750 
755 #define VPI_STAT_PIXEL_COUNT (1U << 0)
756 
758 #define VPI_STAT_SUM (1U << 1)
759 
761 #define VPI_STAT_MEAN ((1U << 2) | VPI_STAT_SUM | VPI_STAT_PIXEL_COUNT)
762 
764 #define VPI_STAT_VARIANCE ((1U << 3) | VPI_STAT_MEAN)
765 
767 #define VPI_STAT_COVARIANCE ((1U << 4) | VPI_STAT_VARIANCE)
768 
772 typedef struct
773 {
775  uint16_t id;
777  int16_t correctedBits;
789  VPIKeypointF32 corners[4];
791 
795 typedef struct
796 {
811  float transform[3][4];
813  float error;
814 } VPIPose;
815 
816 #ifdef __cplusplus
817 }
818 #endif
819 
820 #endif /* NV_VPI_TYPES_H */
定义用于处理图像格式的类型和函数。
定义 VPI 中使用的所有插值类型。
定义用于处理像素类型的类型和函数。
VPI 状态代码处理函数的声明。
#define VPI_BRIEF_DESCRIPTOR_ARRAY_LENGTH
Brief 描述符数组的长度。
定义: Types.h:363
VPIGradientMethod
生成梯度的不同方法。
定义: Types.h:743
@ VPI_GRADIENT_SOBEL
通过 Sobel 算子生成 x 方向和 y 方向的梯度。
定义: Types.h:745
@ VPI_GRADIENT_BLUR_PREWITT
通过在模糊输入图像上使用 Prewitt 算子生成梯度。
定义: Types.h:748
#define VPI_MAX_MATCHES_PER_DESCRIPTOR
每个描述符的最大匹配数。
定义: Types.h:566
VPITrackingState
对象跟踪状态。
定义: Types.h:445
@ VPI_TRACKING_STATE_LOST
对象不再被跟踪。
定义: Types.h:454
@ VPI_TRACKING_STATE_SHADOW_TRACKED
对象正在以低置信度被跟踪。
定义: Types.h:480
@ VPI_TRACKING_STATE_TRACKED
对象正在以高置信度被跟踪。
定义: Types.h:471
@ VPI_TRACKING_STATE_NEW
要跟踪的新对象。
定义: Types.h:461
VPINormType
定义向量的大小。
定义: Types.h:727
@ VPI_NORM_L2
L2 范数。
定义: Types.h:732
@ VPI_NORM_HAMMING
汉明范数。
定义: Types.h:735
@ VPI_NORM_L1
L1 范数。
定义: Types.h:729
VPICornerScore
定义不同类型的角点得分。
定义: Types.h:355
@ VPI_CORNER_SCORE_FAST
使用 FAST 角点得分。
定义: Types.h:357
@ VPI_CORNER_SCORE_HARRIS
使用 Harris 响应角点得分。
定义: Types.h:356
VPIFlipMode
定义图像翻转方向。
定义: Types.h:709
@ VPI_FLIP_HORIZ
水平翻转。
定义: Types.h:711
@ VPI_FLIP_VERT
垂直翻转。
定义: Types.h:714
@ VPI_FLIP_BOTH
水平和垂直翻转。
定义: Types.h:719
存储 BRIEF 描述符。
定义: Types.h:374
用于处理 VPI 库版本的函数和结构体。
float decisionMargin
二进制解码过程质量的度量:强度之间的平均差异...
定义: Types.h:782
VPIKeypointF32 center
图像像素坐标中检测的中心。
定义: Types.h:787
VPIHomographyTransform2D homography
描述从“理想”标签(角点位于 (-1,... 的投影的 3x3 单应性矩阵。
定义: Types.h:785
uint16_t id
标签的解码 ID。
定义: Types.h:775
int16_t correctedBits
此检测纠正的位数。
定义: Types.h:777
存储来自 AprilTag 检测器的 AprilTag 检测信息。
定义: Types.h:773
struct VPIArrayImpl * VPIArray
数组的句柄。
定义: Types.h:232
int maxThreads
parallel_for 实现代码使用的最大线程数。
定义: Types.h:206
void * userData
传递给回调函数且未更改的用户定义不透明指针。
定义: Types.h:218
VPIParallelForCallback callback
指向 parallel_for 实现的指针。
定义: Types.h:213
void(* VPIParallelTask)(int taskId, int threadId, void *vpiData)
并行任务函数指针类型。
定义: Types.h:167
void * VPINativeThreadHandle
操作系统特定线程句柄的句柄。
定义: Types.h:226
struct VPIContextImpl * VPIContext
上下文的句柄。
定义: Types.h:238
void(* VPIParallelForCallback)(VPIParallelTask task, int taskCount, void *vpiData, void *userData)
并行 for 回调函数指针类型。
定义: Types.h:191
存储 ParallelFor 配置。
定义: Types.h:199
VPIConversionPolicy
在图像类型之间转换时使用的策略。
定义: Types.h:291
@ VPI_CONVERSION_CLAMP
将输入钳制到输出的类型范围。
定义: Types.h:297
@ VPI_CONVERSION_INVALID
无效的转换。
定义: Types.h:305
@ VPI_CONVERSION_CAST
将输入强制转换为输出类型。
定义: Types.h:302
VPITrackingState state
此边界框的跟踪状态。
定义: Types.h:521
void * userData
指向某些未指定用户数据的指针。
定义: Types.h:539
float filterChannelWeightsLR
DCF 中不同特征通道权重的学习率。
定义: Types.h:534
float filterLR
指数移动平均中 DCF 滤波器的学习率。
定义: Types.h:530
VPIAxisAlignedBoundingBoxF32 bbox
被跟踪对象周围的边界框。
定义: Types.h:518
int32_t seqIndex
跟踪对象所在的输入序列的索引。
定义: Types.h:526
存储有关 DCF 跟踪器跟踪的对象的信息。
定义: Types.h:516
struct VPIEventImpl * VPIEvent
事件的句柄。
定义: Types.h:244
struct VPIImageImpl * VPIImage
图像的句柄。
定义: Types.h:256
int8_t templateStatus
与此边界框相关的模板的状态。
定义: Types.h:504
int8_t trackingStatus
此边界框的跟踪状态。
定义: Types.h:497
VPIBoundingBox bbox
正在跟踪的边界框。
定义: Types.h:490
uint8_t reserved1
保留以供将来使用。
定义: Types.h:508
存储 KLT 跟踪器正在跟踪的边界框。
定义: Types.h:488
float VPICameraExtrinsic[3][4]
相机外参矩阵。
定义: Types.h:668
float VPICameraIntrinsic[2][3]
相机内参矩阵。
定义: Types.h:655
struct VPIPayloadImpl * VPIPayload
算法有效载荷的句柄。
定义: Types.h:268
float VPIPerspectiveTransform[3][3]
表示 2D 透视变换。
定义: Types.h:689
struct VPIPyramidImpl * VPIPyramid
图像金字塔的句柄。
定义: Types.h:262
struct VPIStreamImpl * VPIStream
流的句柄。
定义: Types.h:250
VPIBackend
VPI 后端类型。
定义: Types.h:91
@ VPI_BACKEND_CUDA
CUDA 后端。
定义: Types.h:93
@ VPI_BACKEND_PVA
PVA 后端。
定义: Types.h:94
@ VPI_BACKEND_NVENC
NVENC 后端。
定义: Types.h:96
@ VPI_BACKEND_OFA
OFA 后端。
定义: Types.h:97
@ VPI_BACKEND_VIC
VIC 后端。
定义: Types.h:95
@ VPI_BACKEND_INVALID
无效的后端。
定义: Types.h:98
@ VPI_BACKEND_CPU
CPU 后端。
定义: Types.h:92
int32_t pixelCount
像素总数。
定义: Types.h:556
float width
边界框宽度。
定义: Types.h:426
float left
定义边界框左上角的坐标。
定义: Types.h:437
float top
定义边界框右上角的坐标。
定义: Types.h:438
float height
边界框高度。
定义: Types.h:440
float layer
关键点所在八度音阶内的金字塔层。
定义: Types.h:324
float octave
关键点所在的金字塔八度音阶(或金字塔级别)。
定义: Types.h:323
float y
关键点的 y 坐标。
定义: Types.h:322
float width
边界框宽度。
定义: Types.h:439
uint32_t y
关键点的 y 坐标。
定义: Types.h:348
float x
关键点的 x 坐标。
定义: Types.h:321
float height
边界框高度。
定义: Types.h:427
VPIHomographyTransform2D xform
定义边界框左上角及其单应性。
定义: Types.h:425
float x
关键点的 x 坐标。
定义: Types.h:335
float error
姿态估计的对象空间误差。
定义: Types.h:813
float y
关键点的 y 坐标。
定义: Types.h:336
uint32_t x
关键点的 x 坐标。
定义: Types.h:347
VPIBorderExtension
图像边界扩展指定应如何构造图像域外部的像素值。
定义: Types.h:277
VPIEventState
定义事件的状态。
定义: Types.h:696
VPIOpticalFlowQuality
定义光流算法的质量。
定义: Types.h:598
VPILockMode
定义内存锁定功能使用的锁定模式。
定义: Types.h:614
@ VPI_BORDER_INVALID
无效的边界。
定义: Types.h:283
@ VPI_BORDER_ZERO
图像外部的所有像素都被视为零。
定义: Types.h:278
@ VPI_BORDER_LIMITED
将图像视为受限,无法访问外部像素。
定义: Types.h:282
@ VPI_BORDER_CLAMP
边界像素无限重复。
定义: Types.h:279
@ VPI_BORDER_MIRROR
dedcb|abcde|dcbab
定义: Types.h:281
@ VPI_BORDER_REFLECT
edcba|abcde|edcba
定义: Types.h:280
@ VPI_EVENT_STATE_NOT_SIGNALED
事件尚未发出信号。
定义: Types.h:698
@ VPI_EVENT_STATE_SIGNALED
事件已发出信号。
定义: Types.h:701
@ VPI_OPTICAL_FLOW_QUALITY_LOW
快速但低质量的光流实现。
定义: Types.h:600
@ VPI_OPTICAL_FLOW_QUALITY_HIGH
慢速但高质量的光流实现。
定义: Types.h:606
@ VPI_OPTICAL_FLOW_QUALITY_MEDIUM
VPI_OPTICAL_FLOW_QUALITY_LOW 和 VPI_OPTICAL_FLOW_QUALITY_HIGH 之间的速度和质量。
定义: Types.h:603
@ VPI_LOCK_WRITE
仅锁定内存以进行写入。
定义: Types.h:628
@ VPI_LOCK_READ_WRITE
锁定内存以进行读取和写入。
定义: Types.h:631
@ VPI_LOCK_READ
仅锁定内存以进行读取。
定义: Types.h:617
存储轴对齐的 32 位浮点 2D 边界框。
定义: Types.h:436
存储通用 2D 边界框。
定义: Types.h:424
存储通用 2D 单应性变换。
定义: Types.h:404
存储 float32 关键点坐标。坐标相对于图像的左上角。
定义: Types.h:334
存储 U32 关键点坐标。坐标相对于图像的左上角。
定义: Types.h:346
存储 2 个描述符之间的匹配项。
定义: Types.h:574
从一个 3D 坐标系到另一个 3D 坐标系的变换估计,带有对象空间误差。
定义: Types.h:796
存储基于 float32 金字塔的关键点坐标。坐标包括 (x,...
定义: Types.h:320
存储矩形的几何信息。
定义: Types.h:588
存储图像的统计信息。
定义: Types.h:548