Skip to content

Commit 78943ad

Browse files
Merge pull request #669 from piercus/inv
feat: Mat.inv()
2 parents e31aa51 + 185a937 commit 78943ad

File tree

3 files changed

+24
-0
lines changed

3 files changed

+24
-0
lines changed

cc/core/coreUtils.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
Nan::SetPrototypeMethod(ctor, "bitwiseXor", BitwiseXor); \
9090
Nan::SetPrototypeMethod(ctor, "abs", Abs); \
9191
Nan::SetPrototypeMethod(ctor, "transpose", Transpose); \
92+
Nan::SetPrototypeMethod(ctor, "inv", Inv); \
9293
Nan::SetPrototypeMethod(ctor, "determinant", Determinant);\
9394
Nan::SetPrototypeMethod(ctor, "matMul", MatMul);
9495

@@ -157,6 +158,9 @@
157158
static NAN_METHOD(Transpose) { \
158159
FF_SELF_OPERATOR(cv::transpose); \
159160
} \
161+
static NAN_METHOD(Inv) { \
162+
FF_SELF_OPERATOR(cv::invert); \
163+
} \
160164
static NAN_METHOD(MatMul) { \
161165
FF_OPERATOR(*, FF_APPLY_OPERATOR, Mat, "MatMul"); \
162166
}

lib/typings/Mat.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ export class Mat {
205205
inRangeAsync(lower: Vec3, upper: Vec3): Promise<Mat>;
206206
integral(sdepth?: number, sqdepth?: number): { sum: Mat, sqsum: Mat, tilted: Mat };
207207
integralAsync(sdepth?: number, sqdepth?: number): Promise<{ sum: Mat, sqsum: Mat, tilted: Mat }>;
208+
inv(): Mat;
208209
laplacian(ddepth: number, ksize?: number, scale?: number, delta?: number, borderType?: number): Mat;
209210
laplacianAsync(ddepth: number, ksize?: number, scale?: number, delta?: number, borderType?: number): Promise<Mat>;
210211
matMul(B: Mat): Mat;

test/tests/core/Mat/operatorTests.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ module.exports = function ({ cv, utils }) {
55
const {
66
assertError,
77
assertDataDeepEquals,
8+
assertDataAlmostDeepEquals,
89
assertMetaData
910
} = utils;
1011

@@ -353,7 +354,25 @@ module.exports = function ({ cv, utils }) {
353354
assertDataDeepEquals(res.getDataAsArray(), expectedResult);
354355
});
355356
});
357+
358+
describe('inv', () => {
359+
it('apply inverse to matrix', () => {
360+
const mat0 = new cv.Mat([
361+
[4, 7],
362+
[2, 6]
363+
], cv.CV_32F);
364+
const expectedResult = [
365+
[0.6, -0.7],
366+
[-0.2, 0.4]
367+
];
356368

369+
const res = mat0.inv();
370+
assertMetaData(res)(2, 2, cv.CV_32F);
371+
372+
assertDataAlmostDeepEquals(res.getDataAsArray(), expectedResult);
373+
});
374+
});
375+
357376
describe('matMul', () => {
358377
operatorRequiresArg('matMul');
359378

0 commit comments

Comments
 (0)