@koala123/aoi-db 1.0.0
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.
Potentially problematic release.
This version of @koala123/aoi-db might be problematic. Click here for more details.
- package/README.md +114 -0
- package/dist/app.controller.d.ts +22 -0
- package/dist/app.controller.js +257 -0
- package/dist/app.controller.js.map +1 -0
- package/dist/app.dto.d.ts +83 -0
- package/dist/app.dto.js +315 -0
- package/dist/app.dto.js.map +1 -0
- package/dist/app.library.d.ts +20 -0
- package/dist/app.library.js +196 -0
- package/dist/app.library.js.map +1 -0
- package/dist/app.module.d.ts +6 -0
- package/dist/app.module.js +26 -0
- package/dist/app.module.js.map +1 -0
- package/dist/app.service.d.ts +152 -0
- package/dist/app.service.js +441 -0
- package/dist/app.service.js.map +1 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.js +33 -0
- package/dist/main.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { FeatureDto, FeatureRes, QueryRes, IdTypeDto, CoreLearnDto, CropSamplesDto, FeatureExtractDto, FeatureExtractRes, SampleDto, SampleFeatureDto } from "./app.dto";
|
|
2
|
+
export interface KLConfig {
|
|
3
|
+
/** dllPath;默认值:D:/kl-storage/dll/ */
|
|
4
|
+
dllPath: string;
|
|
5
|
+
/** db路径;默认值:D:/kl-storage/gallery/db/ */
|
|
6
|
+
dbPath: string;
|
|
7
|
+
/** 引擎宽;默认值:5120 */
|
|
8
|
+
width: number;
|
|
9
|
+
/** 引擎高;默认值:5120 */
|
|
10
|
+
height: number;
|
|
11
|
+
/** 引擎通道;默认值:3 */
|
|
12
|
+
channel: number;
|
|
13
|
+
/** 特征维度;默认值:384 */
|
|
14
|
+
featureDIM: number;
|
|
15
|
+
/** 特征小图高;默认值:256 */
|
|
16
|
+
featureWidth: number;
|
|
17
|
+
/** 特征小图宽;默认值:256 */
|
|
18
|
+
featureHeight: number;
|
|
19
|
+
/** 外环切区域不能用于注册,注册无效区域(防呆区域);默认值64 */
|
|
20
|
+
deadproofArea: number;
|
|
21
|
+
}
|
|
22
|
+
export declare class AppService {
|
|
23
|
+
/** 配置项 */
|
|
24
|
+
private KLConfig;
|
|
25
|
+
/** KL工具库 */
|
|
26
|
+
private UtilsLib;
|
|
27
|
+
/** KLDB库 */
|
|
28
|
+
private KLDBLib;
|
|
29
|
+
constructor(config: Partial<KLConfig>);
|
|
30
|
+
/**
|
|
31
|
+
* defect被删除,需要同时删除其对应db文件中对应的type
|
|
32
|
+
*/
|
|
33
|
+
eraseDefect(id: number): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* 初始化引擎
|
|
36
|
+
*/
|
|
37
|
+
initEngine(): Promise<boolean>;
|
|
38
|
+
/**
|
|
39
|
+
* 销毁引擎
|
|
40
|
+
*/
|
|
41
|
+
destroyEngine(): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* 导出数据
|
|
44
|
+
* @param db
|
|
45
|
+
*/
|
|
46
|
+
exportDB(db: string, exportFeature?: boolean): Promise<FeatureDto[]>;
|
|
47
|
+
/**
|
|
48
|
+
* 查找所有db
|
|
49
|
+
*/
|
|
50
|
+
findAll(): Promise<string[]>;
|
|
51
|
+
/**
|
|
52
|
+
* 加载DB到内存中,不存在则创建一个新的DB
|
|
53
|
+
* @param db db路径;若父目录不存在,则创建失败;db目录是相对KLConfig.dbPath
|
|
54
|
+
* @param releaseFirst load之前是否先releaseDB
|
|
55
|
+
* @returns db的条目总数
|
|
56
|
+
*/
|
|
57
|
+
load(db: string, releaseFirst?: boolean): Promise<number>;
|
|
58
|
+
/**
|
|
59
|
+
* 释放DB
|
|
60
|
+
* @param db db路径
|
|
61
|
+
* @returns 此操作是否成功
|
|
62
|
+
*/
|
|
63
|
+
release(db: string): Promise<boolean>;
|
|
64
|
+
/**
|
|
65
|
+
* 删除db文件
|
|
66
|
+
* @param db db路径
|
|
67
|
+
* @returns 操作是否成功
|
|
68
|
+
*/
|
|
69
|
+
delete(db: string): Promise<boolean>;
|
|
70
|
+
/**
|
|
71
|
+
* 插入数据
|
|
72
|
+
* @param db db路径
|
|
73
|
+
* @param data 数据列表
|
|
74
|
+
* @returns db的条目总数
|
|
75
|
+
*/
|
|
76
|
+
insert(db: string, data: FeatureDto[]): Promise<number>;
|
|
77
|
+
/**
|
|
78
|
+
* 通过id列表删除数据
|
|
79
|
+
* @param db db路径
|
|
80
|
+
* @param ids
|
|
81
|
+
* @returns db的条目总数
|
|
82
|
+
*/
|
|
83
|
+
eraseByIds(db: string, ids: number[]): Promise<number>;
|
|
84
|
+
/**
|
|
85
|
+
* 通过类型type删除数据
|
|
86
|
+
* @param db db路径
|
|
87
|
+
* @param type
|
|
88
|
+
* @returns db的条目总数
|
|
89
|
+
*/
|
|
90
|
+
eraseByType(db: string, type: number): Promise<number>;
|
|
91
|
+
/**
|
|
92
|
+
* 更新db
|
|
93
|
+
* @param db db路径
|
|
94
|
+
* @param data 更新数据列表 [{id,type}]
|
|
95
|
+
* @returns 更新操作是否成功
|
|
96
|
+
*/
|
|
97
|
+
update(db: string, data: IdTypeDto[]): Promise<number>;
|
|
98
|
+
/**
|
|
99
|
+
* 根据feature查询最近邻的type与score
|
|
100
|
+
* @param db db路径
|
|
101
|
+
* @param features
|
|
102
|
+
*/
|
|
103
|
+
query(db: string, features: string[]): Promise<QueryRes>;
|
|
104
|
+
/**
|
|
105
|
+
* @TODO 接口太过复杂,算法应提供一版软件端值需提供全图buffer和提取特征的中心坐标与小图宽高即可
|
|
106
|
+
* 提取特征
|
|
107
|
+
*/
|
|
108
|
+
featureExtract(data: FeatureExtractDto): Promise<FeatureExtractRes>;
|
|
109
|
+
/**
|
|
110
|
+
* 采集正常图像上的特征向量
|
|
111
|
+
* 此操作会向db写入特征数据与生成对应的sample小图
|
|
112
|
+
*/
|
|
113
|
+
coreLearn(data: CoreLearnDto): Promise<FeatureRes[]>;
|
|
114
|
+
/**
|
|
115
|
+
* 裁剪sample小图
|
|
116
|
+
*/
|
|
117
|
+
cropSamplesBySrc(param: CropSamplesDto): Promise<boolean>;
|
|
118
|
+
/**
|
|
119
|
+
* 裁剪sample小图
|
|
120
|
+
*/
|
|
121
|
+
private cropSamples;
|
|
122
|
+
/**
|
|
123
|
+
* 删除sample小图
|
|
124
|
+
* @param param0
|
|
125
|
+
* @param db sample小图对应的db
|
|
126
|
+
* @param srcs sample小图地址
|
|
127
|
+
* @returns db的条目总数
|
|
128
|
+
*/
|
|
129
|
+
eraseSamples(db: string, srcs: string[]): Promise<number>;
|
|
130
|
+
/**
|
|
131
|
+
* 移动sample小图,只能移动到同pattern
|
|
132
|
+
* @param db sample小图对应的db
|
|
133
|
+
* @param data sample小图的地址 [{src,dist}]
|
|
134
|
+
* @returns 是否成功
|
|
135
|
+
*/
|
|
136
|
+
updateSamples(db: string, data: SampleDto[]): Promise<number>;
|
|
137
|
+
/**
|
|
138
|
+
* insertsample小图,同时添加到db
|
|
139
|
+
* @param db sample小图对应的db
|
|
140
|
+
* @param data sample小图的地址与特征 [{src,dist,feature}]
|
|
141
|
+
* @returns db的条目总数
|
|
142
|
+
*/
|
|
143
|
+
insertSamples(db: string, data: SampleFeatureDto[]): Promise<number>;
|
|
144
|
+
/**
|
|
145
|
+
* 读图
|
|
146
|
+
*/
|
|
147
|
+
private readImage;
|
|
148
|
+
/**
|
|
149
|
+
* 写图
|
|
150
|
+
*/
|
|
151
|
+
private writeImage;
|
|
152
|
+
}
|
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
+
if (mod && mod.__esModule) return mod;
|
|
26
|
+
var result = {};
|
|
27
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
+
__setModuleDefault(result, mod);
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
31
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
32
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
33
|
+
};
|
|
34
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
35
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
36
|
+
};
|
|
37
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
38
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
39
|
+
};
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.AppService = void 0;
|
|
42
|
+
const node_util_1 = require("node:util");
|
|
43
|
+
const fs = __importStar(require("node:fs/promises"));
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const kl_buffer_1 = __importDefault(require("kl-buffer"));
|
|
46
|
+
const common_1 = require("@nestjs/common");
|
|
47
|
+
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
48
|
+
const app_library_1 = require("./app.library");
|
|
49
|
+
let AppService = class AppService {
|
|
50
|
+
constructor(config) {
|
|
51
|
+
this.KLConfig = Object.assign({
|
|
52
|
+
dllPath: 'D:/kl-storage/dll/',
|
|
53
|
+
dbPath: 'D:/kl-storage/gallery/db/',
|
|
54
|
+
width: 5120,
|
|
55
|
+
height: 5120,
|
|
56
|
+
channel: 3,
|
|
57
|
+
featureDIM: 384,
|
|
58
|
+
featureWidth: 256,
|
|
59
|
+
featureHeight: 256,
|
|
60
|
+
deadproofArea: 64,
|
|
61
|
+
}, config);
|
|
62
|
+
this.UtilsLib = (0, app_library_1.shmem)(this.KLConfig.dllPath);
|
|
63
|
+
this.KLDBLib = (0, app_library_1.anomaly)(this.KLConfig.dllPath);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* defect被删除,需要同时删除其对应db文件中对应的type
|
|
67
|
+
*/
|
|
68
|
+
async eraseDefect(id) {
|
|
69
|
+
const files = await this.findAll();
|
|
70
|
+
for (let i = 0; i < files.length; i++) {
|
|
71
|
+
await this.eraseByType(files[i], id);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* 初始化引擎
|
|
76
|
+
*/
|
|
77
|
+
async initEngine() {
|
|
78
|
+
const { dbPath, width, height, channel, featureDIM } = this.KLConfig;
|
|
79
|
+
const time = Date.now();
|
|
80
|
+
const bool = await (0, node_util_1.promisify)(this.KLDBLib.initEngine.async)(dbPath, 1, channel, height, width, featureDIM);
|
|
81
|
+
console.log(bool ? "初始化引擎成功" : "初始化引擎失败", `耗时:${Date.now() - time}ms`);
|
|
82
|
+
return bool;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 销毁引擎
|
|
86
|
+
*/
|
|
87
|
+
destroyEngine() {
|
|
88
|
+
const bool = this.KLDBLib.destroyEngine();
|
|
89
|
+
console.log(bool ? "关闭引擎成功" : "关闭引擎失败");
|
|
90
|
+
return bool;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* 导出数据
|
|
94
|
+
* @param db
|
|
95
|
+
*/
|
|
96
|
+
async exportDB(db, exportFeature) {
|
|
97
|
+
if (db.slice(0, 4) === 'temp')
|
|
98
|
+
return Promise.reject();
|
|
99
|
+
try {
|
|
100
|
+
const dbPath = path.join(this.KLConfig.dbPath, db);
|
|
101
|
+
const result = await fs.readFile(dbPath);
|
|
102
|
+
// result: count/4 + featureDIM/4 + (id/4 + type/4 + feature/featureDIM * 4)*count
|
|
103
|
+
const count = result.readInt32LE(0);
|
|
104
|
+
const featureSize = 8 + result.readInt32LE(4) * 4;
|
|
105
|
+
const features = [];
|
|
106
|
+
for (let i = 0; i < count; i++) {
|
|
107
|
+
const s = 8 + featureSize * i;
|
|
108
|
+
features.push({
|
|
109
|
+
id: result.readInt32LE(s),
|
|
110
|
+
type: result.readInt32LE(s + 4),
|
|
111
|
+
feature: exportFeature ?
|
|
112
|
+
Buffer.from(result.buffer, s, featureSize - 8).toString('base64') : '',
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return features;
|
|
116
|
+
}
|
|
117
|
+
catch (e) {
|
|
118
|
+
return Promise.reject(e);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* 查找所有db
|
|
123
|
+
*/
|
|
124
|
+
async findAll() {
|
|
125
|
+
try {
|
|
126
|
+
const files = await fs.readdir(this.KLConfig.dbPath);
|
|
127
|
+
return files.filter((e) => {
|
|
128
|
+
return e.slice(-3) === '.db' && e.slice(0, 5) != 'temp-';
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
return Promise.reject(error);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* 加载DB到内存中,不存在则创建一个新的DB
|
|
137
|
+
* @param db db路径;若父目录不存在,则创建失败;db目录是相对KLConfig.dbPath
|
|
138
|
+
* @param releaseFirst load之前是否先releaseDB
|
|
139
|
+
* @returns db的条目总数
|
|
140
|
+
*/
|
|
141
|
+
async load(db, releaseFirst) {
|
|
142
|
+
if (releaseFirst)
|
|
143
|
+
await this.release(db);
|
|
144
|
+
return (0, node_util_1.promisify)(this.KLDBLib.load_DB.async)(db);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* 释放DB
|
|
148
|
+
* @param db db路径
|
|
149
|
+
* @returns 此操作是否成功
|
|
150
|
+
*/
|
|
151
|
+
async release(db) {
|
|
152
|
+
return (0, node_util_1.promisify)(this.KLDBLib.release_DB.async)(db);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* 删除db文件
|
|
156
|
+
* @param db db路径
|
|
157
|
+
* @returns 操作是否成功
|
|
158
|
+
*/
|
|
159
|
+
async delete(db) {
|
|
160
|
+
const bool = await this.release(db);
|
|
161
|
+
try {
|
|
162
|
+
const dbPath = path.join(this.KLConfig.dbPath, db);
|
|
163
|
+
await fs.access(dbPath);
|
|
164
|
+
return fs.unlink(dbPath).then(() => true);
|
|
165
|
+
}
|
|
166
|
+
catch (error) { }
|
|
167
|
+
return bool;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* 插入数据
|
|
171
|
+
* @param db db路径
|
|
172
|
+
* @param data 数据列表
|
|
173
|
+
* @returns db的条目总数
|
|
174
|
+
*/
|
|
175
|
+
async insert(db, data) {
|
|
176
|
+
if (!data.length)
|
|
177
|
+
return Promise.reject(-1);
|
|
178
|
+
const bufferIds = Buffer.from(Int32Array.from(data.map((e) => e.id)).buffer);
|
|
179
|
+
const bufferTypes = Buffer.from(Int32Array.from(data.map((e) => e.type)).buffer);
|
|
180
|
+
return (0, node_util_1.promisify)(this.KLDBLib.insert.async)(db, data.length, bufferIds, bufferTypes, Buffer.concat(data.map((e) => Buffer.alloc(this.KLConfig.featureDIM * 4, e.feature, "base64"))));
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* 通过id列表删除数据
|
|
184
|
+
* @param db db路径
|
|
185
|
+
* @param ids
|
|
186
|
+
* @returns db的条目总数
|
|
187
|
+
*/
|
|
188
|
+
async eraseByIds(db, ids) {
|
|
189
|
+
if (!ids.length)
|
|
190
|
+
return Promise.reject(-1);
|
|
191
|
+
const bufferIds = Buffer.from(Int32Array.from(ids).buffer);
|
|
192
|
+
return (0, node_util_1.promisify)(this.KLDBLib.erase.async)(db, ids.length, bufferIds);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* 通过类型type删除数据
|
|
196
|
+
* @param db db路径
|
|
197
|
+
* @param type
|
|
198
|
+
* @returns db的条目总数
|
|
199
|
+
*/
|
|
200
|
+
async eraseByType(db, type) {
|
|
201
|
+
return (0, node_util_1.promisify)(this.KLDBLib.erase_type.async)(db, type);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* 更新db
|
|
205
|
+
* @param db db路径
|
|
206
|
+
* @param data 更新数据列表 [{id,type}]
|
|
207
|
+
* @returns 更新操作是否成功
|
|
208
|
+
*/
|
|
209
|
+
async update(db, data) {
|
|
210
|
+
const bufferIds = Buffer.from(Int32Array.from(data.map((e) => e.id)).buffer);
|
|
211
|
+
const bufferTypes = Buffer.from(Int32Array.from(data.map((e) => e.type)).buffer);
|
|
212
|
+
return (0, node_util_1.promisify)(this.KLDBLib.update.async)(db, data.length, bufferIds, bufferTypes, null //feature数组
|
|
213
|
+
);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* 根据feature查询最近邻的type与score
|
|
217
|
+
* @param db db路径
|
|
218
|
+
* @param features
|
|
219
|
+
*/
|
|
220
|
+
async query(db, features) {
|
|
221
|
+
if (features.length == 0) {
|
|
222
|
+
return {
|
|
223
|
+
scores: [],
|
|
224
|
+
ids: [],
|
|
225
|
+
types: [],
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
const length = features.length;
|
|
229
|
+
const newFeature = features.map((feature) => {
|
|
230
|
+
return Buffer.alloc(this.KLConfig.featureDIM * 4, feature, "base64");
|
|
231
|
+
});
|
|
232
|
+
const bufferFeatures = Buffer.concat(newFeature);
|
|
233
|
+
const bufferScores = Buffer.from(Float32Array.from(new Array(length)).buffer);
|
|
234
|
+
const bufferTypes = Buffer.from(Int32Array.from(new Array(length)).buffer);
|
|
235
|
+
const bufferIds = Buffer.from(Int32Array.from(new Array(length)).buffer);
|
|
236
|
+
(0, node_util_1.promisify)(this.KLDBLib.query.async)(db, length, bufferFeatures, bufferScores, bufferTypes, bufferIds);
|
|
237
|
+
return {
|
|
238
|
+
scores: Array.from(new Float32Array(bufferScores.buffer)),
|
|
239
|
+
ids: Array.from(new Int32Array(bufferIds.buffer)),
|
|
240
|
+
types: Array.from(new Int32Array(bufferTypes.buffer)),
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* @TODO 接口太过复杂,算法应提供一版软件端值需提供全图buffer和提取特征的中心坐标与小图宽高即可
|
|
245
|
+
* 提取特征
|
|
246
|
+
*/
|
|
247
|
+
async featureExtract(data) {
|
|
248
|
+
const { src, channel, width, height, dist, x, y } = data;
|
|
249
|
+
// 外环切区域不能用于注册,注册无效区域(防呆区域) deadproofArea = 64
|
|
250
|
+
const { featureHeight: h, featureWidth: w, deadproofArea } = this.KLConfig;
|
|
251
|
+
if (!src || !dist)
|
|
252
|
+
return Promise.reject();
|
|
253
|
+
if (x < deadproofArea || x > width - deadproofArea || y < deadproofArea || y > height - deadproofArea) {
|
|
254
|
+
return Promise.reject('注册区域无效!');
|
|
255
|
+
}
|
|
256
|
+
// 因为坐标点的值必须要能被16整除,进行能被16整除的坐标计算
|
|
257
|
+
let leftTopX_correct = Math.floor((x - w / 2) / 16) * 16;
|
|
258
|
+
let leftTopY_correct = Math.floor((y - h / 2) / 16) * 16;
|
|
259
|
+
// 缺陷小图xy方向不能超出图片边缘
|
|
260
|
+
leftTopX_correct = Math.min(width - w, Math.max(0, leftTopX_correct));
|
|
261
|
+
leftTopY_correct = Math.min(height - h, Math.max(0, leftTopY_correct));
|
|
262
|
+
const buffer = await this.readImage(src, width, height, channel);
|
|
263
|
+
const cropBuffer = Buffer.alloc(w * h * channel);
|
|
264
|
+
const roi = kl_buffer_1.default.alloc(16 * 2 + 8);
|
|
265
|
+
// [srcROI.x, srcROI.y, srcROI.w, srcROI.h, distROI.x, distROI.y, distROI.w, distROI.h, cx/特征在小图中的位置, cy]
|
|
266
|
+
roi.intArray = [leftTopX_correct, leftTopY_correct, w, h, 0, 0, w, h, x - leftTopX_correct, y - leftTopY_correct];
|
|
267
|
+
await (0, node_util_1.promisify)(this.UtilsLib.copy.async)(buffer, height, width, roi.ptr, cropBuffer, h, w, roi.intPtr[4], channel);
|
|
268
|
+
const bufferFeature = Buffer.alloc(this.KLConfig.featureDIM * 4);
|
|
269
|
+
await (0, node_util_1.promisify)(this.KLDBLib.featureExtract.async)(cropBuffer, h, w, channel, roi.intPtr[8], bufferFeature);
|
|
270
|
+
await this.writeImage(dist, w, h, channel, cropBuffer, true);
|
|
271
|
+
return {
|
|
272
|
+
feature: bufferFeature.toString('base64'),
|
|
273
|
+
position: [x - 8, y - 8, 24, 24, leftTopX_correct, leftTopY_correct],
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* 采集正常图像上的特征向量
|
|
278
|
+
* 此操作会向db写入特征数据与生成对应的sample小图
|
|
279
|
+
*/
|
|
280
|
+
async coreLearn(data) {
|
|
281
|
+
const KLConfig = this.KLConfig;
|
|
282
|
+
const { src, srcMask, width = KLConfig.width, height = KLConfig.height, channel = KLConfig.channel, db, threshold, sampleDir, normalId = 0, learnUntilNone = false, featureCount = 1024, } = data;
|
|
283
|
+
if (!db || !sampleDir)
|
|
284
|
+
return;
|
|
285
|
+
await this.load(db);
|
|
286
|
+
const buffer = await this.readImage(src, width, height, channel);
|
|
287
|
+
let bufferMask = null;
|
|
288
|
+
if (srcMask)
|
|
289
|
+
bufferMask = await this.readImage(srcMask, width, height, 1);
|
|
290
|
+
// 提取的特征
|
|
291
|
+
const features = [];
|
|
292
|
+
const bufferFeatures = kl_buffer_1.default.alloc(featureCount * 3 * 4);
|
|
293
|
+
let num;
|
|
294
|
+
do {
|
|
295
|
+
num = await (0, node_util_1.promisify)(this.KLDBLib.coreLearn.async)(db, buffer, bufferMask, height, width, channel, normalId, featureCount, threshold, bufferFeatures.buffer);
|
|
296
|
+
const arr = bufferFeatures.intArray;
|
|
297
|
+
for (let i = 0; i < num; i++) {
|
|
298
|
+
features.push({ id: arr[3 * i], x: arr[3 * i + 1], y: arr[3 * i + 2] });
|
|
299
|
+
}
|
|
300
|
+
} while (learnUntilNone && num === featureCount);
|
|
301
|
+
this.cropSamples(buffer, width, height, channel, sampleDir, features);
|
|
302
|
+
return features;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* 裁剪sample小图
|
|
306
|
+
*/
|
|
307
|
+
async cropSamplesBySrc(param) {
|
|
308
|
+
const { src, channel, width, height, sampleDir, data } = param;
|
|
309
|
+
if (!src || !sampleDir || !data.length)
|
|
310
|
+
return false;
|
|
311
|
+
const buffer = await this.readImage(src, width, height, channel);
|
|
312
|
+
await this.cropSamples(buffer, width, height, channel, sampleDir, data);
|
|
313
|
+
return true;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* 裁剪sample小图
|
|
317
|
+
*/
|
|
318
|
+
async cropSamples(buffer, width, height, channel, sampleDir, data) {
|
|
319
|
+
if (!data.length)
|
|
320
|
+
return data;
|
|
321
|
+
const { featureHeight: w, featureWidth: h } = this.KLConfig;
|
|
322
|
+
const distROI = kl_buffer_1.default.alloc(16);
|
|
323
|
+
distROI.intArray = [0, 0, w, h];
|
|
324
|
+
sampleDir = path.normalize(sampleDir + '/');
|
|
325
|
+
await fs.mkdir(sampleDir, { recursive: true });
|
|
326
|
+
for (let i = 0, item; item = data[i]; i++) {
|
|
327
|
+
const cropBuffer = Buffer.alloc(w * h * channel);
|
|
328
|
+
const srcROI = kl_buffer_1.default.alloc(16);
|
|
329
|
+
srcROI.intArray = [item.x, item.y, w, h];
|
|
330
|
+
(0, node_util_1.promisify)(this.UtilsLib.copy.async)(buffer, height, width, srcROI.ptr, cropBuffer, h, w, distROI.ptr, channel);
|
|
331
|
+
this.writeImage(sampleDir + item.id + ".png", w, h, channel, cropBuffer);
|
|
332
|
+
}
|
|
333
|
+
return data;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* 删除sample小图
|
|
337
|
+
* @param param0
|
|
338
|
+
* @param db sample小图对应的db
|
|
339
|
+
* @param srcs sample小图地址
|
|
340
|
+
* @returns db的条目总数
|
|
341
|
+
*/
|
|
342
|
+
async eraseSamples(db, srcs) {
|
|
343
|
+
if (!db || !srcs.length)
|
|
344
|
+
return Promise.reject(-1);
|
|
345
|
+
// 先删数据再删图
|
|
346
|
+
const ids = srcs.map(e => parseInt(path.extname(e)) || 0);
|
|
347
|
+
const count = await this.eraseByIds(db, ids);
|
|
348
|
+
for (const src of srcs) {
|
|
349
|
+
try {
|
|
350
|
+
await fs.unlink(src);
|
|
351
|
+
}
|
|
352
|
+
catch (e) { }
|
|
353
|
+
}
|
|
354
|
+
return count;
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* 移动sample小图,只能移动到同pattern
|
|
358
|
+
* @param db sample小图对应的db
|
|
359
|
+
* @param data sample小图的地址 [{src,dist}]
|
|
360
|
+
* @returns 是否成功
|
|
361
|
+
*/
|
|
362
|
+
async updateSamples(db, data) {
|
|
363
|
+
if (!db || !data.length)
|
|
364
|
+
return Promise.reject(-1);
|
|
365
|
+
const updateData = [];
|
|
366
|
+
for (let i = 0; i < data.length; i++) {
|
|
367
|
+
const { src, dist } = data[i];
|
|
368
|
+
const dirname = path.dirname(dist);
|
|
369
|
+
try {
|
|
370
|
+
await fs.mkdir(dirname, { recursive: true });
|
|
371
|
+
await fs.rename(src, dist);
|
|
372
|
+
updateData.push({
|
|
373
|
+
id: parseInt(path.basename(dist)),
|
|
374
|
+
type: parseInt(path.basename(dirname)),
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
catch (e) {
|
|
378
|
+
// console.log(e)
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
return this.update(db, updateData);
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* insertsample小图,同时添加到db
|
|
385
|
+
* @param db sample小图对应的db
|
|
386
|
+
* @param data sample小图的地址与特征 [{src,dist,feature}]
|
|
387
|
+
* @returns db的条目总数
|
|
388
|
+
*/
|
|
389
|
+
async insertSamples(db, data) {
|
|
390
|
+
if (!db || !data.length)
|
|
391
|
+
return Promise.reject(-1);
|
|
392
|
+
const insertData = [];
|
|
393
|
+
for (let i = 0; i < data.length; i++) {
|
|
394
|
+
const { src, dist, feature } = data[i];
|
|
395
|
+
const dirname = path.dirname(dist);
|
|
396
|
+
try {
|
|
397
|
+
await fs.mkdir(dirname, { recursive: true });
|
|
398
|
+
await fs.copyFile(src, dist);
|
|
399
|
+
insertData.push({
|
|
400
|
+
id: parseInt(path.basename(dist)),
|
|
401
|
+
type: parseInt(path.basename(dirname)),
|
|
402
|
+
feature,
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
catch (e) {
|
|
406
|
+
console.log(e);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
return this.insert(db, insertData);
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* 读图
|
|
413
|
+
*/
|
|
414
|
+
async readImage(src, width, height, channel, buffer) {
|
|
415
|
+
if (!buffer)
|
|
416
|
+
buffer = Buffer.alloc(width * height * channel);
|
|
417
|
+
await (0, node_util_1.promisify)(this.UtilsLib.imread.async)(src, buffer, height, width, channel, true);
|
|
418
|
+
return buffer;
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* 写图
|
|
422
|
+
*/
|
|
423
|
+
async writeImage(src, width, height, channel, buffer, mkdir) {
|
|
424
|
+
if (mkdir)
|
|
425
|
+
await fs.mkdir(path.dirname(src), { recursive: true });
|
|
426
|
+
return (0, node_util_1.promisify)(this.UtilsLib.imwrite.async)(src, buffer, height, width, channel, true);
|
|
427
|
+
}
|
|
428
|
+
};
|
|
429
|
+
exports.AppService = AppService;
|
|
430
|
+
__decorate([
|
|
431
|
+
(0, event_emitter_1.OnEvent)('defect.erase'),
|
|
432
|
+
__metadata("design:type", Function),
|
|
433
|
+
__metadata("design:paramtypes", [Number]),
|
|
434
|
+
__metadata("design:returntype", Promise)
|
|
435
|
+
], AppService.prototype, "eraseDefect", null);
|
|
436
|
+
exports.AppService = AppService = __decorate([
|
|
437
|
+
(0, common_1.Injectable)(),
|
|
438
|
+
__param(0, (0, common_1.Inject)('CONFIG_OPTIONS')),
|
|
439
|
+
__metadata("design:paramtypes", [Object])
|
|
440
|
+
], AppService);
|
|
441
|
+
//# sourceMappingURL=app.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.service.js","sourceRoot":"","sources":["../src/app.service.ts"],"names":[],"mappings":"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"}
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/main.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@nestjs/core");
|
|
4
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
5
|
+
const app_module_1 = require("./app.module");
|
|
6
|
+
async function bootstrap() {
|
|
7
|
+
const app = await core_1.NestFactory.create(app_module_1.AppModule.forRoot());
|
|
8
|
+
const config = new swagger_1.DocumentBuilder()
|
|
9
|
+
.setTitle('AOI Server')
|
|
10
|
+
.setDescription('The AOI Server API description')
|
|
11
|
+
.setVersion('1.0')
|
|
12
|
+
.addServer('/api')
|
|
13
|
+
.build();
|
|
14
|
+
const document = swagger_1.SwaggerModule.createDocument(app, config);
|
|
15
|
+
swagger_1.SwaggerModule.setup('api', app, document);
|
|
16
|
+
app.enableCors();
|
|
17
|
+
app.setGlobalPrefix('/api');
|
|
18
|
+
const aoiDBService = app.get(app_module_1.AOIDBService);
|
|
19
|
+
process.on("SIGTERM", async () => {
|
|
20
|
+
console.log("Received SIGTERM signal. Shutting down gracefully...");
|
|
21
|
+
aoiDBService.destroyEngine();
|
|
22
|
+
process.exit(0);
|
|
23
|
+
});
|
|
24
|
+
process.on("SIGINT", async () => {
|
|
25
|
+
console.log("Received SIGINT signal. Shutting down gracefully...");
|
|
26
|
+
aoiDBService.destroyEngine();
|
|
27
|
+
process.exit(0);
|
|
28
|
+
});
|
|
29
|
+
aoiDBService.initEngine();
|
|
30
|
+
await app.listen(3000);
|
|
31
|
+
}
|
|
32
|
+
bootstrap();
|
|
33
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;AAAA,uCAA2C;AAC3C,6CAAiE;AACjE,6CAAuD;AAEvD,KAAK,UAAU,SAAS;IACtB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAG,IAAI,yBAAe,EAAE;SACjC,QAAQ,CAAC,YAAY,CAAC;SACtB,cAAc,CAAC,gCAAgC,CAAC;SAChD,UAAU,CAAC,KAAK,CAAC;SACjB,SAAS,CAAC,MAAM,CAAC;SACjB,KAAK,EAAE,CAAC;IACX,MAAM,QAAQ,GAAG,uBAAa,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3D,uBAAa,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAE1C,GAAG,CAAC,UAAU,EAAE,CAAC;IACjB,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAE5B,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,yBAAY,CAAC,CAAA;IAC1C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC/B,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QACpE,YAAY,CAAC,aAAa,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,YAAY,CAAC,aAAa,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,YAAY,CAAC,UAAU,EAAE,CAAC;IAE1B,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AACD,SAAS,EAAE,CAAC"}
|