屏幕捕获
ssf.Frame
高速屏幕捕获,捕获后可直接转为图像对象直接处理
ssf.Frame 功能概述
主要用于高速捕获屏幕,捕获出来的可以转为字节数据或者Image对象,前者可用于直接传输图像(原始rgb数据),后者可转为图像对象,以便直接用于模板匹配、目标检测等
屏幕信息
定义了获取屏幕尺寸的信息。
属性名 | 类型 | 描述 |
---|---|---|
width | number | 屏幕的宽度 |
height | number | 屏幕的高度 |
ssf.Frame 模块
init
方法
初始化 Frame
模块。在调用其他屏幕捕获相关 API 前必须先执行此方法。
ssf.Frame.init(): void;
示例
// 初始化屏幕捕获模块
ssf.Frame.init();
screen
方法
获取当前屏幕图像,并返回图像的字节数组(RGBA 格式)。
ssf.Frame.screen(timeout?: number, max_timeout?: number): ArrayBuffer;
参数
参数名 | 类型 | 描述 |
---|---|---|
timeout | number (可选) | 每次捕获的间隔时间,单位为毫秒。例如,20ms 表示每次图像捕获之间的时间间隔为 20 毫秒。 |
max_timeout | number (可选) | 最大等待时间(单位为毫秒)。如果捕获过程超过了这个时间,则会触发超时异常。 |
返回值
ArrayBuffer
- 包含 当前屏幕图像的字节数组(RGBA 格式)。
示例
// 初始化屏幕捕获模块
ssf.Frame.init();
// 获取屏幕图像数据
try {
const imageBuffer = ssf.Frame.screen(20, 5000); // 每次捕获间隔 20ms,最大等待时间 5000ms
console.log('图像数据捕获成功:', imageBuffer);
} catch (error) {
console.error('屏幕捕获错误:', error);
}
screen_info
方法
获取当前屏幕的宽度和高度信息。
ssf.Frame.screen_info(): ScreenInfo;
返回值
ScreenInfo
- 包含屏幕宽度和高度的对象。
示例
// 初始化屏幕捕获模块
ssf.Frame.init();
// 获取屏幕信息
const screenInfo = ssf.Frame.screen_info();
console.log(`屏幕宽度: ${screenInfo.width}, 高度: ${screenInfo.height}`);
to_image
方法
获取当前屏幕并转换成 ssf.Image
对象,以便于图像的直接处理。
ssf.Frame.to_image(timeout?: number, max_timeout?: number): ssf.Image;
参数
参数名 | 类型 | 描述 |
---|---|---|
timeout | number (可选) | 每次捕获的间隔时间,单位为毫秒。 |
max_timeout | number (可选) | 最大等待时间(单位为毫秒)。如果捕获过程超过了这个时间,则会触发超时异常。 |
返回值
ssf.Image
- 转换后的屏幕图像对象,方便后续操作。
示例
// 初始化屏幕捕获模块
ssf.Frame.init();
// 将屏幕图像转换为图像对象
try {
const image = ssf.Frame.to_image(20, 5000); // 每次捕获间隔 20ms,最大等待时间 5000ms
console.log('图像对象创建成功:', image);
} catch (error) {
console.error('屏幕图像转换错误:', error);
}
完整示例
以下是一个完整的示例,演示了如何初始化屏幕捕获模块,获取屏幕信息,捕获屏幕图像数据,并将其转换为图像对象:
// 初始化屏幕捕获模块
ssf.Frame.init();
// 获取屏幕信息
const screenInfo = ssf.Frame.screen_info();
console.log(`屏幕宽度: ${screenInfo.width}, 高度: ${screenInfo.height}`);
// 获取屏幕图像数据
try {
const imageBuffer = ssf.Frame.screen(20, 5000); // 每次捕获间隔 20ms,最大等待时间 5000ms
console.log('图像数据捕获成功:', imageBuffer);
} catch (error) {
console.error('屏幕捕获错误:', error);
}
// 将屏幕图像转换为图像对象
try {
const image = ssf.Frame.to_image(20, 5000); // 每次捕获间隔 20ms,最大等待时间 5000ms
console.log('图像对象创建成功:', image);
} catch (error) {
console.error('屏幕图像转换错误:', error);
}