跳到主要内容

图像处理

支持模板匹配、颜色匹配、以及结合ai模块进行目标检测等

ssf.Image

主要用于图像搜索匹配,例如模板匹配、图像颜色匹配、图像相似度匹配等。

ssf.ImageInfo

图像信息

定义了获取图像尺寸的信息。

属性名类型描述
widthnumber图像的宽度
heightnumber图像的高度

ssf.enums.ImageType 枚举

输入的图像类型枚举

定义了支持的图像类型。

枚举值描述
RgbRGB 格式
RgbaRGBA 格式
Gray灰度图

ssf.ColorResult

颜色匹配结果

定义了颜色匹配成功返回的坐标信息。

属性名类型描述
xnumberX 坐标
ynumberY 坐标

ssf.FindResult

查找图像结果

定义了查找图像返回的坐标和匹配度信息。

属性名类型描述
xnumberX 坐标
ynumberY 坐标
wnumber宽度
hnumber高度
scorenumber匹配分数,分数值越高匹配度越高

ssf.Image 图像接口

Image 接口

定义了图像处理的各种方法。

data 方法

返回图像数据,可能包括返回 rgba、rgb、灰度图其中之一的原始数据。

data(): ArrayBuffer;

示例

const img = ssf.Image.load('path/to/image.png');
const imageData = img.data();
console.log('图像数据:', imageData);

color 方法

返回图像的通道数。

color(): number;

示例

const img = ssf.Image.load('path/to/image.png');
const channels = img.color();
console.log('图像通道数:', channels);

clone 方法

克隆一个全新的 Image 对象。注意克隆出来的对象使用完需要手动调用 close 方法避免内存泄漏。

clone(): Image;

示例

const img = ssf.Image.load('path/to/image.png');
const clonedImg = img.clone();
console.log('克隆的图像对象:', clonedImg);
clonedImg.close();

gray 方法

转换为灰度图。

gray(): Image;

示例

const img = ssf.Image.load('path/to/image.png');
const grayImg = img.gray();
console.log('灰度图对象:', grayImg);

bytes 方法

返回图像的字节数组,例如 PNG 图像数据。

bytes(): ArrayBuffer;

示例

const img = ssf.Image.load('path/to/image.png');
const imageBytes = img.bytes();
console.log('图像字节数组:', imageBytes);

save 方法

保存图像。

save(path: string): void;

示例

const img = ssf.Image.load('path/to/image.png');
img.save('path/to/saved/image.png');

crop 方法

按 x, y, w, h 裁剪图像。

crop(x: number, y: number, w: number, h: number): void;

示例

const img = ssf.Image.load('path/to/image.png');
img.crop(10, 10, 100, 100);

crop_imm 方法

按 x, y, w, h 裁剪图像并返回一个新图像。

crop_imm(x: number, y: number, w: number, h: number): Image;

示例

const img = ssf.Image.load('path/to/image.png');
const croppedImg = img.crop_imm(10, 10, 100, 100);
console.log('裁剪的新图像对象:', croppedImg);

resize 方法

缩放图像。

resize(w: number, h: number): void;

示例

const img = ssf.Image.load('path/to/image.png');
img.resize(200, 200);

dhash 方法

获得图像的 dhash 值,可用于图像搜索应用。

dhash(len: number): String;

示例

const img = ssf.Image.load('path/to/image.png');
const dhashValue = img.dhash(64);
console.log('图像的 dhash 值:', dhashValue);

ahash 方法

获得图像的 ahash 值,可用于图像搜索应用。

ahash(len: number): String;

示例

const img = ssf.Image.load('path/to/image.png');
const ahashValue = img.ahash(64);
console.log('图像的 ahash 值:', ahashValue);

phash 方法

获得图像的 phash 值,可用于图像搜索应用。

phash(len: number): String;

示例

const img = ssf.Image.load('path/to/image.png');
const phashValue = img.phash(64);
console.log('图像的 phash 值:', phashValue);

canny 方法

应用 Canny 算子,返回图像的边缘。

canny(low_threshold: number, high_threshold: number): void;

示例

const img = ssf.Image.load('path/to/image.png');
img.canny(100, 200);

find_color 方法

根据输入的颜色寻找图像上所在位置。

find_color(
r: number,
g: number,
b: number,
min_threshold: number,
max_threshold: number,
width: number,
height: number,
): ColorResult[];

示例

const img = ssf.Image.load('path/to/image.png');
const colorResults = img.find_color(255, 0, 0, 10, 20, 100, 100);
console.log('找到的颜色位置:', colorResults);

find 方法

根据输入的图像,匹配在图像上的所在位置,模板匹配。

find(img: Image, threshold: number, step: number): FindResult[];

示例

const img = ssf.Image.load('path/to/image.png');
const templateImg = ssf.Image.load('path/to/template.png');
const matchResults = img.find(templateImg, 0.8, 10);
console.log('匹配结果:', matchResults);

compare 方法

使用 DSSIM 对比输入的图像和当前图像的相似度。

compare(img: Image): number;

示例

const img1 = ssf.Image.load('path/to/image1.png');
const img2 = ssf.Image.load('path/to/image2.png');
const similarity = img1.compare(img2);
console.log('图像相似度:', similarity);

info 方法

返回图像的宽高信息。

info(): ImageInfo;

示例

const img = ssf.Image.load('path/to/image.png');
const imgInfo = img.info();
console.log('图像宽高信息:', imgInfo);

close 方法

手动关闭图像资源。

close(): void;

示例

const img = ssf.Image.load('path/to/image.png');
img.close();

ssf.Image 静态方法

load 方法

根据路径加载图像。

load(path: string): Image;

示例

const img = ssf.Image.load('path/to/image.png');
console.log('加载的图像对象:', img);

batch_compare 方法

批量比较图像相似度。

batch_compare(sources: Image[], targets: Image[]): number[];

示例

const sources = [img1, img2];
const targets = [img3, img4];
const similarities = ssf.Image.batch_compare(sources, targets);
console.log('批量比较结果:', similarities);

load_data 方法

根据输入的 RGB 数组数据构造图像对象。

load_data(data: ArrayBuffer, w: number, h: number, image_type: enums.ImageType): Image;

示例

const rgbData = new Uint8Array([/* RGB 数据 */]);
const customImg = ssf.Image.load_data(rgbData.buffer, 100, 100, ssf.enums.ImageType.Rgb);
console.log('根据 RGB 数据构造的图像对象:', customImg);

load_bytes 方法

从网络加载图像,例如 PNG 格式图像。

load_bytes(data: ArrayBuffer, mime_type: String): Image;

示例

const pngData = new Uint8Array([/* PNG 数据 */]);
const webImg = ssf.Image.load_bytes(pngData.buffer, 'image/png');
console.log('从网络加载的图像对象:', webImg);