@sssxyd/face-liveness-detector 0.4.0-alpha.11 → 0.4.0-alpha.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,86 @@
1
+ /**
2
+ * 屏幕边角、轮廓检测器
3
+ * 用于快速判定当前图片是否从屏幕拍摄
4
+ * 通过检测图片中的屏幕边界轮廓(矩形框)
5
+ */
6
+ /**
7
+ * 屏幕边角、轮廓检测器配置选项
8
+ */
9
+ export interface ScreenCornersContourDetectorOptions {
10
+ /** Canny 边缘检测下阈值(默认 35) */
11
+ edgeThreshold1?: number;
12
+ /** Canny 边缘检测上阈值(默认 110) */
13
+ edgeThreshold2?: number;
14
+ /** 最小轮廓面积(默认 800) */
15
+ minContourArea?: number;
16
+ /** 屏幕检测置信度阈值(默认 0.5) */
17
+ screenConfidenceThreshold?: number;
18
+ /** 屏幕边界占比阈值(默认 0.15) */
19
+ screenBoundaryRatioThreshold?: number;
20
+ }
21
+ /**
22
+ * 默认的屏幕边角、轮廓检测器配置
23
+ * 优化用于快速检测摄像头拍摄的手机/平板屏幕
24
+ * 严格模式:仅当非常确定时才判定为屏幕
25
+ */
26
+ export declare const DEFAULT_SCREEN_CORNERS_CONTOUR_DETECTOR_OPTIONS: Required<ScreenCornersContourDetectorOptions>;
27
+ export interface ScreenCornersContourDetectionResult {
28
+ /** 是否检测到屏幕 */
29
+ isScreenCapture: boolean;
30
+ /** 置信度(0-1) */
31
+ confidence: number;
32
+ /** 检测到的屏幕矩形轮廓数量 */
33
+ contourCount: number;
34
+ /** 屏幕边界占图片面积的比例 */
35
+ screenBoundaryRatio: number;
36
+ /** 处理耗时(毫秒) */
37
+ processingTimeMs: number;
38
+ }
39
+ /**
40
+ * 屏幕边角、轮廓检测器
41
+ * 用快速边缘和轮廓检测来识别屏幕采集
42
+ */
43
+ export declare class ScreenCornersContourDetector {
44
+ private cv;
45
+ private config;
46
+ /**
47
+ * 构造函数
48
+ * @param options - 检测器配置选项
49
+ */
50
+ constructor(options?: Partial<ScreenCornersContourDetectorOptions>);
51
+ /**
52
+ * 设置 OpenCV 实例
53
+ */
54
+ setCVInstance(cv: any): void;
55
+ /**
56
+ * 检测图片是否为屏幕采集
57
+ * @param grayFrame - 灰度图像 Mat
58
+ * @returns 检测结果
59
+ */
60
+ detect(grayFrame: any): ScreenCornersContourDetectionResult;
61
+ /**
62
+ * Canny 边缘检测
63
+ */
64
+ private detectEdges;
65
+ /**
66
+ * 计算非零像素数量
67
+ */
68
+ private countNonZeroPixels;
69
+ /**
70
+ * 轮廓检测 - 检测屏幕矩形边界
71
+ */
72
+ private detectContours;
73
+ /**
74
+ * 检查四边形是否接近矩形
75
+ */
76
+ private isRectangleShape;
77
+ /**
78
+ * 简化的屏幕检测置信度计算
79
+ */
80
+ private calculateScreenConfidence;
81
+ /**
82
+ * 获取检测器状态消息
83
+ */
84
+ getMessage(confidence: number): string;
85
+ }
86
+ //# sourceMappingURL=screen-corners-contour-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen-corners-contour-detector.d.ts","sourceRoot":"","sources":["../../src/screen-corners-contour-detector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,mCAAmC;IAElD,2BAA2B;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,4BAA4B;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IAGvB,qBAAqB;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IAGvB,wBAAwB;IACxB,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAClC,wBAAwB;IACxB,4BAA4B,CAAC,EAAE,MAAM,CAAA;CACtC;AAED;;;;GAIG;AACH,eAAO,MAAM,+CAA+C,EAAE,QAAQ,CAAC,mCAAmC,CAazG,CAAA;AAED,MAAM,WAAW,mCAAmC;IAClD,cAAc;IACd,eAAe,EAAE,OAAO,CAAA;IACxB,eAAe;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,mBAAmB;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,mBAAmB;IACnB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,eAAe;IACf,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED;;;GAGG;AACH,qBAAa,4BAA4B;IACvC,OAAO,CAAC,EAAE,CAAY;IACtB,OAAO,CAAC,MAAM,CAA+C;IAE7D;;;OAGG;gBACS,OAAO,CAAC,EAAE,OAAO,CAAC,mCAAmC,CAAC;IAOlE;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAI5B;;;;OAIG;IACH,MAAM,CAAC,SAAS,EAAE,GAAG,GAAG,mCAAmC;IAmC3D;;OAEG;IACH,OAAO,CAAC,WAAW;IASnB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACH,OAAO,CAAC,cAAc;IA6DtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+BxB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAiBjC;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;CASvC"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * 屏幕闪烁检测器
3
+ *
4
+ * 核心思路:利用视频帧序列的时间特性
5
+ * - 屏幕显示内容时有屏幕刷新频率(60/120/144Hz),导致亮度周期性变化
6
+ * - 真实人脸没有这种周期性闪烁,变化是随机的
7
+ *
8
+ * 算法:
9
+ * 1. 收集N帧视频(15-30帧)
10
+ * 2. 对每个像素的时间序列计算自相关(autocorrelation)
11
+ * 3. 如果在某个周期lag发现强自相关 → 存在周期性 → 屏幕闪烁
12
+ * 4. 统计多少像素检测到周期性,若超过阈值则判定为屏幕
13
+ */
14
+ import { VideoFrameCollector } from "./video-frame-collector";
15
+ export interface ScreenFlickerDetectorConfig {
16
+ bufferSize: number;
17
+ minFlickerPeriodFrames: number;
18
+ maxFlickerPeriodFrames: number;
19
+ correlationThreshold: number;
20
+ passingPixelRatio: number;
21
+ samplingStride: number;
22
+ }
23
+ export interface ScreenFlickerDetectionResult {
24
+ isScreenCapture: boolean;
25
+ confidence: number;
26
+ dominantFlickerPeriod?: number;
27
+ estimatedScreenRefreshRate?: number;
28
+ passingPixelRatio: number;
29
+ averageFps?: number;
30
+ sampledPixelCount: number;
31
+ details?: {
32
+ correlationValues: number[];
33
+ pixelFlickerCounts: Map<number, number>;
34
+ };
35
+ }
36
+ export declare class ScreenFlickerDetector {
37
+ private config;
38
+ private frameCollector;
39
+ constructor(frameCollector: VideoFrameCollector, config: ScreenFlickerDetectorConfig);
40
+ /**
41
+ * 获取当前缓冲区中的帧数
42
+ */
43
+ getBufferedFrameCount(): number;
44
+ /**
45
+ * 执行闪烁检测分析
46
+ * 需要至少 maxFlickerPeriodFrames + 1 帧的数据
47
+ *
48
+ * 根据实际fps自动调整检测周期范围,以支持不同刷新率的屏幕
49
+ * 根据分辨率自动调整采样密度和通过率阈值
50
+ */
51
+ analyze(): ScreenFlickerDetectionResult;
52
+ /**
53
+ * 重置检测器
54
+ * 注意:帧缓冲由 FrameCollector 管理
55
+ */
56
+ reset(): void;
57
+ /**
58
+ * 获取当前平均fps
59
+ */
60
+ getAverageFps(): number;
61
+ /**
62
+ * 根据实测fps动态调整最大检测周期
63
+ *
64
+ * 高fps摄像头 + 高刷屏的周期较短
65
+ * 低fps摄像头 + 高刷屏的周期较长
66
+ *
67
+ * 例如:
68
+ * - 60fps摄像头:120Hz屏 → 2帧周期 → max=2
69
+ * - 30fps摄像头:120Hz屏 → 4帧周期 → max=4
70
+ * - 15fps摄像头:120Hz屏 → 8帧周期 → max=8
71
+ */
72
+ private getEffectiveMaxPeriod;
73
+ /**
74
+ * 根据分辨率动态调整采样参数
75
+ *
76
+ * 低分辨率时:
77
+ * - 增加采样密度(减小stride)以获得足够的样本
78
+ * - 降低通过率阈值以适应噪声影响
79
+ *
80
+ * 高分辨率时:
81
+ * - 可以使用较大的stride来加快处理
82
+ * - 提高通过率阈值以提高准确性
83
+ */
84
+ private getResolutionAdaptation;
85
+ /**
86
+ * 生成采样像素的索引
87
+ * @param stride 采样步长(默认使用配置中的值)
88
+ */
89
+ private generateSampledPixels;
90
+ /**
91
+ * 提取单个像素在所有帧中的亮度时间序列
92
+ */
93
+ private extractPixelTimeSeries;
94
+ /**
95
+ * 计算时间序列的自相关系数
96
+ * 返回在不同lag值下的相关系数(归一化到0-1)
97
+ *
98
+ * @param timeSeries 像素亮度时间序列
99
+ * @param maxLag 最大检查的lag值
100
+ */
101
+ private computeAutoCorrelation;
102
+ }
103
+ //# sourceMappingURL=screen-flicker-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen-flicker-detector.d.ts","sourceRoot":"","sources":["../../src/screen-flicker-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAE7D,MAAM,WAAW,2BAA2B;IAE1C,UAAU,EAAE,MAAM,CAAA;IASlB,sBAAsB,EAAE,MAAM,CAAA;IAC9B,sBAAsB,EAAE,MAAM,CAAA;IAI9B,oBAAoB,EAAE,MAAM,CAAA;IAI5B,iBAAiB,EAAE,MAAM,CAAA;IAGzB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,4BAA4B;IAC3C,eAAe,EAAE,OAAO,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;IAGlB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAG9B,0BAA0B,CAAC,EAAE,MAAM,CAAA;IAGnC,iBAAiB,EAAE,MAAM,CAAA;IAGzB,UAAU,CAAC,EAAE,MAAM,CAAA;IAGnB,iBAAiB,EAAE,MAAM,CAAA;IAEzB,OAAO,CAAC,EAAE;QACR,iBAAiB,EAAE,MAAM,EAAE,CAAA;QAC3B,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KACxC,CAAA;CACF;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,cAAc,CAAqB;gBAE/B,cAAc,EAAE,mBAAmB,EAAE,MAAM,EAAE,2BAA2B;IAOpF;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAI/B;;;;;;OAMG;IACH,OAAO,IAAI,4BAA4B;IAoHvC;;;OAGG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,uBAAuB;IA6C/B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAiB7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAa9B;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;CA+C/B"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * 屏幕响应时间检测器 - 区分墨水屏和LCD/OLED
3
+ *
4
+ * 核心原理:
5
+ * - LCD/OLED: 像素状态变化极快 (<5ms),直接从0跳到255
6
+ * - 墨水屏: 像素状态变化缓慢 (200-500ms),需要多帧逐渐过渡
7
+ *
8
+ * 检测方法:
9
+ * 1. 收集视频帧,跟踪像素值变化
10
+ * 2. 测量从初始值到最终值需要多少帧
11
+ * 3. 根据fps计算实际响应时间
12
+ * 4. 响应时间 > 100ms → 墨水屏
13
+ */
14
+ import { VideoFrameCollector } from "./video-frame-collector";
15
+ export interface ScreenResponseTimeDetectorConfig {
16
+ bufferSize: number;
17
+ minPixelDelta: number;
18
+ einkResponseTimeThreshold: number;
19
+ samplingStride: number;
20
+ passingPixelRatio: number;
21
+ }
22
+ export interface ScreenResponseTimeDetectionResult {
23
+ isScreenCapture: boolean;
24
+ confidence: number;
25
+ averageResponseTimeMs?: number;
26
+ maxResponseTimeMs?: number;
27
+ minResponseTimeMs?: number;
28
+ passingPixelRatio: number;
29
+ sampledPixelCount: number;
30
+ estimatedScreenType?: 'lcd' | 'oled' | 'eink' | 'unknown';
31
+ averageFps?: number;
32
+ details?: {
33
+ responseTimes: number[];
34
+ pixelResponsiveness: Map<number, number>;
35
+ };
36
+ }
37
+ export declare class ScreenResponseTimeDetector {
38
+ private config;
39
+ private frameCollector;
40
+ constructor(frameCollector: VideoFrameCollector, config: ScreenResponseTimeDetectorConfig);
41
+ /**
42
+ * 获取当前缓冲区中的帧数
43
+ */
44
+ getBufferedFrameCount(): number;
45
+ /**
46
+ * 执行响应时间检测分析
47
+ *
48
+ * 寻找像素值快速变化的情况,测量变化速度
49
+ * 缓慢变化 → 墨水屏
50
+ * 快速变化 → LCD/OLED
51
+ */
52
+ analyze(): ScreenResponseTimeDetectionResult;
53
+ /**
54
+ * 重置检测器
55
+ * 注意:帧缓冲由 FrameCollector 管理
56
+ */
57
+ reset(): void;
58
+ /**
59
+ * 测量单个像素的响应时间
60
+ *
61
+ * 跟踪该像素的值变化,找出最大的变化
62
+ * 计算这个变化需要多少帧(时间)完成
63
+ */
64
+ private measurePixelResponseTime;
65
+ /**
66
+ * 生成采样像素列表
67
+ */
68
+ private generateSampledPixels;
69
+ }
70
+ //# sourceMappingURL=screen-response-time-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen-response-time-detector.d.ts","sourceRoot":"","sources":["../../src/screen-response-time-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAE7D,MAAM,WAAW,gCAAgC;IAE/C,UAAU,EAAE,MAAM,CAAA;IAGlB,aAAa,EAAE,MAAM,CAAA;IAGrB,yBAAyB,EAAE,MAAM,CAAA;IAGjC,cAAc,EAAE,MAAM,CAAA;IAGtB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,iCAAiC;IAChD,eAAe,EAAE,OAAO,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;IAGlB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAG1B,iBAAiB,EAAE,MAAM,CAAA;IAGzB,iBAAiB,EAAE,MAAM,CAAA;IAGzB,mBAAmB,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IAGzD,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,OAAO,CAAC,EAAE;QACR,aAAa,EAAE,MAAM,EAAE,CAAA;QACvB,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KACzC,CAAA;CACF;AAED,qBAAa,0BAA0B;IACrC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,cAAc,CAAqB;gBAE/B,cAAc,EAAE,mBAAmB,EAAE,MAAM,EAAE,gCAAgC;IAKzF;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAI/B;;;;;;OAMG;IACH,OAAO,IAAI,iCAAiC;IAgH5C;;;OAGG;IACH,KAAK,IAAI,IAAI;IAKb;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAgEhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAgB9B"}
@@ -42,10 +42,8 @@ export interface FaceDetectionEngineOptions {
42
42
  detect_video_mirror?: boolean;
43
43
  /** 加载视频流的超时时间(毫秒,默认 5000) */
44
44
  detect_video_load_timeout?: number;
45
- /** 检测帧之间的延迟(毫秒,默认 100) */
45
+ /** 检测帧之间的延迟(毫秒,默认 150) */
46
46
  detect_frame_delay?: number;
47
- /** 错误后重试前的延迟(毫秒,默认 200) */
48
- detect_error_retry_delay?: number;
49
47
  /** 要采集的静默检测次数(默认 3) */
50
48
  collect_min_collect_count?: number;
51
49
  /** 最小人脸尺寸比例(默认 0.5) */
@@ -70,54 +68,8 @@ export interface FaceDetectionEngineOptions {
70
68
  action_liveness_verify_timeout?: number;
71
69
  /** 最小嘴部张开百分比(默认 0.2) */
72
70
  action_liveness_min_mouth_open_percent?: number;
73
- /** 通过活体检查的最小运动分数(0-1,默认 0.15) */
74
- motion_liveness_min_motion_score?: number;
75
- /** 自然运动的最小关键点方差(0-1,默认 0.02) */
76
- motion_liveness_min_keypoint_variance?: number;
77
- /** 用于运动分析的帧缓冲区数量(默认 5) */
78
- motion_liveness_frame_buffer_size?: number;
79
- /** 眨眼检测的眼睛长宽比阈值(默认 0.15) */
80
- motion_liveness_eye_aspect_ratio_threshold?: number;
81
- /** 光流和关键点方差一致性阈值 (0-1,默认 0.3) - 防止照片微动 */
82
- motion_liveness_motion_consistency_threshold?: number;
83
- /** 最小光流幅度阈值 - 照片几乎无光流 (0-1,默认 0.02) */
84
- motion_liveness_min_optical_flow_threshold?: number;
85
71
  /** 是否启用严格照片检测模式(默认 false) */
86
72
  motion_liveness_strict_photo_detection?: boolean;
87
- /** 屏幕采集的置信度阈值(0-1,默认 0.7) */
88
- screen_capture_confidence_threshold?: number;
89
- /** 综合莫尔纹置信度阈值(0-1,默认 0.65) */
90
- screen_moire_pattern_threshold?: number;
91
- /** 是否启用 DCT 分析(默认 true) */
92
- screen_moire_pattern_enable_dct?: boolean;
93
- /** 是否启用边缘检测(默认 true) */
94
- screen_moire_pattern_enable_edge_detection?: boolean;
95
- /** 色彩饱和度阈值(0-100%,屏幕图像通常 < 40%,默认 40) */
96
- screen_color_saturation_threshold?: number;
97
- /** RGB通道相关性阈值(0-1,屏幕通常 > 0.85,默认 0.75) */
98
- screen_color_rgb_correlation_threshold?: number;
99
- /** 像素值熵阈值(0-8,屏幕通常 < 6.5,默认 6.5) */
100
- screen_color_pixel_entropy_threshold?: number;
101
- /** 梯度平滑性阈值(0-1,屏幕通常 > 0.7,默认 0.7) */
102
- screen_color_gradient_smoothness_threshold?: number;
103
- /** 综合置信度阈值(0-1,用于判定是否为屏幕拍摄,默认 0.65) */
104
- screen_color_confidence_threshold?: number;
105
- /** 低频段开始位置(相对于频谱长度的百分比,默认 0.15) */
106
- screen_rgb_low_freq_start_percent?: number;
107
- /** 低频段结束位置(相对于频谱长度的百分比,默认 0.35) */
108
- screen_rgb_low_freq_end_percent?: number;
109
- /** 能量比归一化因子(默认 10) */
110
- screen_rgb_energy_ratio_normalization_factor?: number;
111
- /** 通道均值差异的归一化因子(默认 50) */
112
- screen_rgb_channel_difference_normalization_factor?: number;
113
- /** RGB 周期性能量权重(默认 0.40) */
114
- screen_rgb_energy_score_weight?: number;
115
- /** RGB 通道不同步程度权重(默认 0.40) */
116
- screen_rgb_asymmetry_score_weight?: number;
117
- /** 通道均值差异权重(默认 0.20) */
118
- screen_rgb_difference_factor_weight?: number;
119
- /** RGB 屏幕拍摄的置信度阈值(默认 0.65) */
120
- screen_rgb_confidence_threshold?: number;
121
73
  }
122
74
  /**
123
75
  * 与默认值合并后的已解析配置
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * 公共帧采集器 - 统一管理多帧图像
3
+ *
4
+ * 核心功能:
5
+ * - 采集灰度和彩色帧
6
+ * - 计算视频FPS
7
+ * - 为多个检测器提供帧缓冲
8
+ * - 支持时间戳记录
9
+ */
10
+ export interface FrameCollectorConfig {
11
+ bufferSize: number;
12
+ }
13
+ /**
14
+ * 公共帧采集器
15
+ *
16
+ * 多个检测器可以共用一个 VideoFrameCollector 实例,减少内存占用和代码重复
17
+ */
18
+ export declare class VideoFrameCollector {
19
+ private config;
20
+ private grayFrames;
21
+ private bgrFrames;
22
+ private frameTimestamps;
23
+ private frameWidth;
24
+ private frameHeight;
25
+ private averageFps;
26
+ private fpsHistory;
27
+ constructor(config?: Partial<FrameCollectorConfig>);
28
+ /**
29
+ * 添加一帧(灰度 + 可选的彩色)
30
+ *
31
+ * @param grayMat 灰度图像矩阵(必需)
32
+ * @param bgrMat 彩色图像矩阵,BGR格式(可选)
33
+ * @param frameTimestamp 帧时间戳,毫秒(可选,默认使用当前时间)
34
+ */
35
+ addFrame(grayMat: any, bgrMat?: any, frameTimestamp?: number): void;
36
+ /**
37
+ * 获取灰度帧缓冲区(直接引用,不复制)
38
+ * @param n 返回最后n个帧,<=0或不提供则返回全部
39
+ */
40
+ getGrayFrames(n?: number): Uint8Array[];
41
+ /**
42
+ * 获取彩色帧缓冲区(可能包含null值)
43
+ * @param n 返回最后n个帧,<=0或不提供则返回全部
44
+ */
45
+ getBgrFrames(n?: number): (Uint8Array | null)[];
46
+ /**
47
+ * 获取指定索引的灰度帧
48
+ */
49
+ getGrayFrame(index: number): Uint8Array | null;
50
+ /**
51
+ * 获取指定索引的彩色帧
52
+ */
53
+ getBgrFrame(index: number): Uint8Array | null;
54
+ /**
55
+ * 获取当前缓冲区中的帧数
56
+ */
57
+ getBufferedFrameCount(): number;
58
+ /**
59
+ * 获取帧时间戳
60
+ */
61
+ getFrameTimestamp(index: number): number | null;
62
+ /**
63
+ * 获取所有帧的时间戳
64
+ */
65
+ getFrameTimestamps(): number[];
66
+ /**
67
+ * 获取帧尺寸
68
+ */
69
+ getFrameSize(): {
70
+ width: number;
71
+ height: number;
72
+ };
73
+ getFrameWidth(): number;
74
+ getFrameHeight(): number;
75
+ /**
76
+ * 获取平均FPS
77
+ */
78
+ getAverageFps(): number;
79
+ /**
80
+ * 重置收集器,清空所有缓冲区
81
+ */
82
+ reset(): void;
83
+ /**
84
+ * 清空帧缓冲区,但保留配置和FPS统计
85
+ */
86
+ clearFrames(): void;
87
+ /**
88
+ * 获取统计信息
89
+ */
90
+ getStats(): {
91
+ bufferedFrames: number;
92
+ bufferSize: number;
93
+ frameWidth: number;
94
+ frameHeight: number;
95
+ averageFps: number;
96
+ fpsHistory: number[];
97
+ };
98
+ /**
99
+ * 获取最近N帧(用于批量处理)
100
+ */
101
+ getLastNFrames(n: number): {
102
+ grayFrames: Uint8Array[];
103
+ bgrFrames: (Uint8Array | null)[];
104
+ timestamps: number[];
105
+ };
106
+ /**
107
+ * 更新FPS统计
108
+ */
109
+ private updateFpsStats;
110
+ }
111
+ //# sourceMappingURL=video-frame-collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-frame-collector.d.ts","sourceRoot":"","sources":["../../src/video-frame-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,oBAAoB;IAEnC,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAsB;IAGpC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,eAAe,CAAe;IAGtC,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,WAAW,CAAY;IAG/B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,UAAU,CAAe;gBAErB,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAMlD;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI;IAyCnE;;;OAGG;IACH,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE;IAOvC;;;OAGG;IACH,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE;IAO/C;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAO9C;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAO7C;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAI/B;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAO/C;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAI9B;;OAEG;IACH,YAAY,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAOjD,aAAa,IAAI,MAAM;IAIvB,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,KAAK,IAAI,IAAI;IASb;;OAEG;IACH,WAAW,IAAI,IAAI;IAOnB;;OAEG;IACH,QAAQ,IAAI;QACV,cAAc,EAAE,MAAM,CAAA;QACtB,UAAU,EAAE,MAAM,CAAA;QAClB,UAAU,EAAE,MAAM,CAAA;QAClB,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,EAAE,MAAM,CAAA;QAClB,UAAU,EAAE,MAAM,EAAE,CAAA;KACrB;IAWD;;OAEG;IACH,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG;QACzB,UAAU,EAAE,UAAU,EAAE,CAAA;QACxB,SAAS,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAA;QAChC,UAAU,EAAE,MAAM,EAAE,CAAA;KACrB;IASD;;OAEG;IACH,OAAO,CAAC,cAAc;CAiCvB"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@sssxyd/face-liveness-detector",
4
- "version": "0.4.0-alpha.11",
4
+ "version": "0.4.0-alpha.13",
5
5
  "description": "Pure JS/TS implementation of liveness face detection based on human.js and opencv.js",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.esm.js",
@@ -26,6 +26,7 @@
26
26
  "files": [
27
27
  "dist",
28
28
  "README.md",
29
+ "README.en.md",
29
30
  "LICENSE"
30
31
  ],
31
32
  "scripts": {