类: Image
image.Image
代表图像对象的类,通过 opencv 的 Mat 构造。或者通过 readImage、decodeImage 等函数从图片文件、链接、Base64 中解析。
Image 对象创建后,在不使用时需要调用 recycle() 方法释放资源,以释放内存。
目录
Constructors
Accessors
方法
- clip
- clipSync
- copy
- copySync
- detectAndComputeFeatures
- grayscale
- grayscaleSync
- pixel
- recycle
- rotate
- rotateSync
- scale
- scaleSync
- resize
- resizeSync
- toBitmap
- ofBitmap
Constructors
constructor
• new Image(mat)
从 opencv 的 Mat 对象构造 Image 对象。
参数
| 名称 | 类型 | 描述 |
|---|---|---|
mat | cv.Mat | opencv 的 Mat 图像对象 |
Accessors
mat
• get mat(): cv.Mat
获取图像的 Mat 对象。Mat 是 opencv 中表示图像数据的基础对象。
返回值
cv.Mat
图像的 Mat 对象。
c4mat
• get c4mat(): cv.Mat
获取四通道(BGRA 格式)的 Mat 对象。如果原图像不是四通道,会自动转换。
返回值
cv.Mat
四通道(BGRA 格式)的 Mat 对象。
width
• get width(): number
获取图像的宽度(像素)。
示例
"nodejs";
const { loadImage } = require("image");
async function main() {
const img = await loadImage("https://picsum.photos/200/300");
console.log("图像宽度:", img.width);
}
main();返回值
number
图像的宽度(像素)。
height
• get height(): number
获取图像的高度(像素)。
示例
"nodejs";
const { loadImage } = require("image");
async function main() {
const img = await loadImage("https://picsum.photos/200/300");
console.log("图像高度:", img.height);
}
main();返回值
number
图像的高度(像素)。
方法
pixel
▸ pixel(x, y): Color
获取图像在位置 (x, y) 处的颜色。若为三通道图像,则假设其为 BGR 格式;若为四通道图像,则假设其为 BGRA 格式;若为单通道图像,则假设其为灰度图。
示例
"nodejs";
const { loadImage } = require("image");
async function main() {
const img = await loadImage("https://picsum.photos/200/300");
const color = img.pixel(0, 0);
console.log("左上角颜色:", color);
}
main();参数
| 名称 | 类型 | 描述 |
|---|---|---|
x | number | X 坐标(从 0 开始,从左到右) |
y | number | Y 坐标(从 0 开始,从上到下) |
返回值
该位置的颜色对象。
clip
▸ clip(rect): Promise<Image>
用给定的区域剪切图像,异步返回剪切后的图像。
示例
"nodejs";
const cv = require("@autojs/opencv");
const { loadImage } = require("image");
async function main() {
const img = await loadImage("https://picsum.photos/200/300");
const clipped = await img.clip(new cv.Rect(0, 0, 100, 100));
console.log("剪切后的图像:", clipped);
}
main();参数
| 名称 | 类型 | 描述 |
|---|---|---|
rect | cv.Rect | 指定剪切区域,包含 x、y、width、height 属性 |
返回值
Promise<Image>
返回一个 Promise,resolve 时返回剪切后的新 Image 对象。
clipSync
▸ clipSync(rect): Image
用给定的区域剪切图像,同步返回剪切后的图像。
示例
"nodejs";
const cv = require("@autojs/opencv");
const { loadImage } = require("image");
async function main() {
const img = await loadImage("https://picsum.photos/200/300");
const clipped = img.clipSync(new cv.Rect(0, 0, 100, 100));
console.log("剪切后的图像:", clipped);
}
main();参数
| 名称 | 类型 | 描述 |
|---|---|---|
rect | cv.Rect | 指定剪切区域,包含 x、y、width、height 属性 |
返回值
返回剪切后的新 Image 对象。
resize
▸ resize(width, height, interpolation?): Promise<Image>
缩放图像,异步返回缩放后的新图像。
参数
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
width | number | undefined | 缩放后的宽度(像素) |
height | number | undefined | 缩放后的高度(像素) |
interpolation | number | cv.INTER_LINEAR | 插值方式。可以为 cv.INTER_AREA、cv.INTER_CUBIC、cv.INTER_LANCZOS4、cv.INTER_LINEAR、cv.INTER_NEAREST 等 |
返回值
Promise<Image>
返回一个 Promise,resolve 时返回缩放后的新 Image 对象。
resizeSync
▸ resizeSync(width, height, interpolation?): Image
缩放图像,同步返回缩放后的新图像。
参数
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
width | number | undefined | 缩放后的宽度(像素) |
height | number | undefined | 缩放后的高度(像素) |
interpolation | number | cv.INTER_LINEAR | 插值方式。可以为 cv.INTER_AREA、cv.INTER_CUBIC、cv.INTER_LANCZOS4、cv.INTER_LINEAR、cv.INTER_NEAREST 等 |
返回值
返回缩放后的新 Image 对象。
scale
▸ scale(fx, fy?, interpolation?): Promise<Image>
缩放图像,异步返回缩放后的新图像。使用缩放比例而不是绝对尺寸。
示例
"nodejs";
const { loadImage } = require("image");
async function main() {
const img = await loadImage("https://picsum.photos/200/300");
// 缩小到原来的一半
const scaled = await img.scale(0.5, 0.5);
console.log("缩放后的图像:", scaled);
}
main();参数
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
fx | number | undefined | x 方向的缩放比例(宽度)。例如 0.5 表示缩小到原来的一半,2.0 表示放大到原来的两倍 |
fy | number | fx | y 方向的缩放比例(高度)。如果不指定,则使用与 fx 相同的值 |
interpolation | number | cv.INTER_LINEAR | 插值方式。可以为 cv.INTER_AREA、cv.INTER_CUBIC、cv.INTER_LANCZOS4、cv.INTER_LINEAR、cv.INTER_NEAREST 等 |
返回值
Promise<Image>
返回一个 Promise,resolve 时返回缩放后的新 Image 对象。
scaleSync
▸ scaleSync(fx, fy?, interpolation?): Image
缩放图像,同步返回缩放后的新图像。使用缩放比例而不是绝对尺寸。
参数
| 名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
fx | number | undefined | x 方向的缩放比例(宽度)。例如 0.5 表示缩小到原来的一半,2.0 表示放大到原来的两倍 |
fy | number | fx | y 方向的缩放比例(高度)。如果不指定,则使用与 fx 相同的值 |
interpolation | number | cv.INTER_LINEAR | 插值方式。可以为 cv.INTER_AREA、cv.INTER_CUBIC、cv.INTER_LANCZOS4、cv.INTER_LINEAR、cv.INTER_NEAREST 等 |
返回值
返回缩放后的新 Image 对象。
rotate
▸ rotate(degree, center?): Promise<Image>
将图像以指定的 center 中心旋转 degree 角度。若不指定 center,则默认为图像中心。异步返回旋转后的图像。
示例
"nodejs";
const cv = require("@autojs/opencv");
const { loadImage } = require("image");
async function main() {
const img = await loadImage("https://picsum.photos/200/300");
// 旋转 90 度
const rotated = await img.rotate(90);
console.log("旋转后的图像:", rotated);
}
main();参数
| 名称 | 类型 | 描述 |
|---|---|---|
degree | number | 旋转角度(度)。正数表示逆时针旋转,负数表示顺时针旋转 |
center | cv.Point2 | 旋转中心点。如果不指定,则使用图像中心 |
返回值
Promise<Image>
返回一个 Promise,resolve 时返回旋转后的新 Image 对象。
rotateSync
▸ rotateSync(degree, center?): Image
将图像以指定的 center 中心旋转 degree 角度。若不指定 center,则默认为图像中心。同步返回旋转后的图像。
参数
| 名称 | 类型 | 描述 |
|---|---|---|
degree | number | 旋转角度(度)。正数表示逆时针旋转,负数表示顺时针旋转 |
center | cv.Point2 | 旋转中心点。如果不指定,则使用图像中心 |
返回值
返回旋转后的新 Image 对象。
grayscale
▸ grayscale(): Promise<Image>
将图像灰度化,异步返回灰度化后的新图片对象。
示例
"nodejs";
const { loadImage } = require("image");
async function main() {
const img = await loadImage("https://picsum.photos/200/300");
const gray = await img.grayscale();
console.log("灰度化后的图像:", gray);
}
main();返回值
Promise<Image>
返回一个 Promise,resolve 时返回灰度化后的新 Image 对象。
grayscaleSync
▸ grayscaleSync(): Image
将图像灰度化,同步返回灰度化后的新图片对象。
返回值
返回灰度化后的新 Image 对象。
copy
▸ copy(): Promise<Image>
将图像拷贝一份,返回新的 Image 对象的 Promise。
示例
"nodejs";
const { loadImage } = require("image");
async function main() {
const img = await loadImage("https://picsum.photos/200/300");
const copied = await img.copy();
console.log("复制的图像:", copied);
}
main();返回值
Promise<Image>
返回一个 Promise,resolve 时返回新的 Image 对象副本。
copySync
▸ copySync(): Image
将图像拷贝一份,并同步返回新的 Image 对象。
返回值
返回新的 Image 对象副本。
toBitmap
▸ toBitmap(): android.graphics.Bitmap
将图像转换为 Android 的 Bitmap 对象。
参见
返回值
android.graphics.Bitmap
Android Bitmap 对象。
detectAndComputeFeatures
▸ detectAndComputeFeatures(options?): Promise<ImageFeatures>
检测并计算图像的特征点,用于特征匹配。
示例
"nodejs";
const { readImage, FeatureDetectMethod } = require("image");
async function main() {
const img = await readImage("./image.png");
const features = await img.detectAndComputeFeatures({
method: FeatureDetectMethod.SIFT,
scale: 0.5, // 缩小到一半以提高速度
});
// 使用特征进行匹配...
// 使用完毕后记得回收
features.recycle();
}
main();参数
| 名称 | 类型 | 描述 |
|---|---|---|
options | DetectAndComputeFeaturesOptions | 特征检测选项,包括检测方法、缩放比例、检测区域等 |
返回值
Promise<ImageFeatures>
返回一个 Promise,resolve 时返回图像特征对象。
recycle
▸ recycle(): void
回收图像对象。回收后不应对本对象进行任何操作。
重要
Image 对象占用内存较大,使用完毕后应该及时调用 recycle() 方法释放资源,避免内存泄漏。
示例
"nodejs";
const { readImage } = require("image");
async function main() {
const img = await readImage("./image.png");
// 对图像进行操作...
const gray = await img.grayscale();
// 使用完毕后回收原图像
img.recycle();
// 使用完毕后回收灰度图像
gray.recycle();
}
main();返回值
void
ofBitmap
▸ Static ofBitmap(bitmap): Image
将 Android Bitmap 对象转为 Image 对象。若 Bitmap 为空或非 Bitmap 对象,则抛出异常。
示例
"nodejs";
const { Image } = require("image");
// 假设有一个 Android Bitmap 对象
const bitmap = /* ... */;
const img = Image.ofBitmap(bitmap);
console.log("从 Bitmap 创建的图像:", img);参数
| 名称 | 类型 | 描述 |
|---|---|---|
bitmap | android.graphics.Bitmap | Android Bitmap 对象 |
返回值
返回 Image 对象。
抛出
如果 Bitmap 为空或非 Bitmap 对象,则抛出异常。
