ppu-ocv 1.7.0 → 3.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.
- package/README.md +200 -47
- package/canvas-factory.d.ts +42 -0
- package/canvas-factory.js +1 -0
- package/canvas-processor.d.ts +18 -0
- package/canvas-processor.js +1 -0
- package/canvas-toolkit.base.d.ts +52 -0
- package/canvas-toolkit.base.js +1 -0
- package/canvas-toolkit.d.ts +8 -87
- package/canvas-toolkit.js +1 -1
- package/contours.d.ts +4 -3
- package/contours.js +1 -1
- package/cv-provider.d.ts +45 -0
- package/cv-provider.js +1 -0
- package/deskew.d.ts +68 -0
- package/deskew.js +1 -0
- package/image-analysis.d.ts +3 -3
- package/image-analysis.js +1 -1
- package/image-processor.d.ts +51 -59
- package/image-processor.js +1 -1
- package/index.canvas-web.d.ts +6 -0
- package/index.canvas-web.js +1 -0
- package/index.canvas.d.ts +8 -0
- package/index.canvas.js +1 -0
- package/index.d.ts +6 -1
- package/index.js +1 -1
- package/index.web.d.ts +14 -0
- package/index.web.js +1 -0
- package/operations/adaptive-threshold.d.ts +3 -3
- package/operations/adaptive-threshold.js +1 -1
- package/operations/blur.d.ts +3 -3
- package/operations/blur.js +1 -1
- package/operations/border.d.ts +3 -3
- package/operations/border.js +1 -1
- package/operations/canny.d.ts +3 -3
- package/operations/canny.js +1 -1
- package/operations/convert.d.ts +3 -3
- package/operations/convert.js +1 -1
- package/operations/dilate.d.ts +3 -3
- package/operations/dilate.js +1 -1
- package/operations/erode.d.ts +3 -3
- package/operations/erode.js +1 -1
- package/operations/grayscale.d.ts +3 -3
- package/operations/grayscale.js +1 -1
- package/operations/invert.d.ts +3 -3
- package/operations/invert.js +1 -1
- package/operations/morphological-gradient.d.ts +3 -3
- package/operations/morphological-gradient.js +1 -1
- package/operations/resize.d.ts +3 -3
- package/operations/resize.js +1 -1
- package/operations/rotate.d.ts +3 -3
- package/operations/rotate.js +1 -1
- package/operations/threshold.d.ts +3 -3
- package/operations/threshold.js +1 -1
- package/operations/warp.d.ts +4 -3
- package/operations/warp.js +1 -1
- package/package.json +26 -7
- package/pipeline/registry.d.ts +1 -1
- package/pipeline/types.d.ts +1 -1
- package/platform/node.d.ts +3 -0
- package/platform/node.js +1 -0
- package/platform/web.d.ts +3 -0
- package/platform/web.js +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{cv
|
|
1
|
+
import{cv}from"../cv-provider.js";import{registry}from"../pipeline/registry.js";function defaultOptions(){return{size:[3,3]}}export function morphologicalGradient(img,options){let imgMorphologicalGradient=new cv.Mat;let kernel=cv.getStructuringElement(cv.MORPH_RECT,new cv.Size(options.size[0],options.size[1]));cv.morphologyEx(img,imgMorphologicalGradient,cv.MORPH_GRADIENT,kernel);img.delete();return{img:imgMorphologicalGradient,width:imgMorphologicalGradient.cols,height:imgMorphologicalGradient.rows}}registry.register("morphologicalGradient",morphologicalGradient,defaultOptions);
|
package/operations/resize.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { OperationResult, RequiredOptions } from "../
|
|
2
|
-
import { cv } from "../
|
|
3
|
-
declare module "../
|
|
1
|
+
import type { OperationResult, RequiredOptions } from "../pipeline/types.js";
|
|
2
|
+
import { cv } from "../cv-provider.js";
|
|
3
|
+
declare module "../pipeline/types" {
|
|
4
4
|
interface RegisteredOperations {
|
|
5
5
|
resize: ResizeOptions;
|
|
6
6
|
}
|
package/operations/resize.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{cv
|
|
1
|
+
import{cv}from"../cv-provider.js";import{registry}from"../pipeline/registry.js";export function resize(img,options){if(!options.width||!options.height){throw new Error("Invalid options: width and height are required")}let imgResize=new cv.Mat;cv.resize(img,imgResize,new cv.Size(options.width,options.height));img.delete();return{img:imgResize,width:imgResize.cols,height:imgResize.rows}}registry.register("resize",resize);
|
package/operations/rotate.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { OperationResult, RequiredOptions } from "../
|
|
2
|
-
import { cv } from "../
|
|
3
|
-
declare module "../
|
|
1
|
+
import type { OperationResult, RequiredOptions } from "../pipeline/types.js";
|
|
2
|
+
import { cv } from "../cv-provider.js";
|
|
3
|
+
declare module "../pipeline/types" {
|
|
4
4
|
interface RegisteredOperations {
|
|
5
5
|
rotate: RotateOptions;
|
|
6
6
|
}
|
package/operations/rotate.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{cv
|
|
1
|
+
import{cv}from"../cv-provider.js";import{registry}from"../pipeline/registry.js";export function rotate(img,options){let center=options.center||new cv.Point(img.cols/2,img.rows/2);let M=cv.getRotationMatrix2D(center,options.angle,1);let dsize=new cv.Size(img.cols,img.rows);let rotatedImg=new cv.Mat;cv.warpAffine(img,rotatedImg,M,dsize,cv.INTER_LINEAR,cv.BORDER_CONSTANT,new cv.Scalar);img.delete();M.delete();return{img:rotatedImg,width:rotatedImg.cols,height:rotatedImg.rows}}registry.register("rotate",rotate);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { OperationResult, PartialOptions } from "../
|
|
2
|
-
import { cv } from "../
|
|
3
|
-
declare module "../
|
|
1
|
+
import type { OperationResult, PartialOptions } from "../pipeline/types.js";
|
|
2
|
+
import { cv } from "../cv-provider.js";
|
|
3
|
+
declare module "../pipeline/types" {
|
|
4
4
|
interface RegisteredOperations {
|
|
5
5
|
threshold: ThresholdOptions;
|
|
6
6
|
}
|
package/operations/threshold.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{cv
|
|
1
|
+
import{cv}from"../cv-provider.js";import{registry}from"../pipeline/registry.js";function defaultOptions(){return{lower:0,upper:255,type:cv.THRESH_BINARY_INV+cv.THRESH_OTSU}}export function threshold(img,options){let imgThreshold=new cv.Mat;cv.threshold(img,imgThreshold,options.lower,options.upper,options.type);img.delete();return{img:imgThreshold,width:imgThreshold.cols,height:imgThreshold.rows}}registry.register("threshold",threshold,defaultOptions);
|
package/operations/warp.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import { cv } from "../cv-provider.js";
|
|
2
|
+
import type { BoundingBox, Points } from "../index.interface.js";
|
|
3
|
+
import type { OperationResult, RequiredOptions } from "../pipeline/types.js";
|
|
4
|
+
declare module "../pipeline/types" {
|
|
4
5
|
interface RegisteredOperations {
|
|
5
6
|
warp: WarpOptions;
|
|
6
7
|
}
|
package/operations/warp.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{cv
|
|
1
|
+
import{cv}from"../cv-provider.js";import{registry}from"../pipeline/registry.js";export function warp(img,options){if(!options.points||!options.bbox){throw new Error("Invalid options: points and bbox are required")}const{points,bbox}=options;let imgWarp=new cv.Mat;let targetWidth=bbox.x1-bbox.x0;let targetHeight=bbox.y1-bbox.y0;let destArray=[0,0,targetWidth-1,0,targetWidth-1,targetHeight-1,0,targetHeight-1];let srcArray=[points.topLeft.x,points.topLeft.y,points.topRight.x,points.topRight.y,points.bottomRight.x,points.bottomRight.y,points.bottomLeft.x,points.bottomLeft.y];let dest=cv.matFromArray(4,1,cv.CV_32FC2,destArray);let src=cv.matFromArray(4,1,cv.CV_32FC2,srcArray);let M=cv.getPerspectiveTransform(src,dest);let dsize=new cv.Size(targetWidth,targetHeight);cv.warpPerspective(img,imgWarp,M,dsize);M.delete();src.delete();dest.delete();img.delete();return{img:imgWarp,width:imgWarp.cols,height:imgWarp.rows}}registry.register("warp",warp);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ppu-ocv",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "A type-safe, modular, chainable image processing library built on top of OpenCV.js with a fluent API leveraging pipeline processing.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"open-cv",
|
|
@@ -16,28 +16,47 @@
|
|
|
16
16
|
"type-safe",
|
|
17
17
|
"modular",
|
|
18
18
|
"chainable",
|
|
19
|
-
"bun"
|
|
19
|
+
"bun",
|
|
20
|
+
"browser",
|
|
21
|
+
"web"
|
|
20
22
|
],
|
|
21
23
|
"author": "snowfluke",
|
|
22
24
|
"license": "MIT",
|
|
23
25
|
"type": "module",
|
|
24
26
|
"main": "./index.js",
|
|
25
27
|
"types": "./index.d.ts",
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"types": "./index.d.ts",
|
|
31
|
+
"default": "./index.js"
|
|
32
|
+
},
|
|
33
|
+
"./web": {
|
|
34
|
+
"types": "./index.web.d.ts",
|
|
35
|
+
"default": "./index.web.js"
|
|
36
|
+
},
|
|
37
|
+
"./canvas": {
|
|
38
|
+
"types": "./index.canvas.d.ts",
|
|
39
|
+
"default": "./index.canvas.js"
|
|
40
|
+
},
|
|
41
|
+
"./canvas-web": {
|
|
42
|
+
"types": "./index.canvas-web.d.ts",
|
|
43
|
+
"default": "./index.canvas-web.js"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
26
46
|
"scripts": {
|
|
27
47
|
"task": "bun scripts/task.ts",
|
|
28
48
|
"build:test": "bun task build && bun test",
|
|
29
49
|
"build:publish": "bun task build && bun task report-size && bun task publish",
|
|
30
|
-
"lint": "
|
|
31
|
-
"lint:fix": "
|
|
50
|
+
"lint": "prettier --check ./src",
|
|
51
|
+
"lint:fix": "prettier --write ./src",
|
|
52
|
+
"demo": "bunx -y serve -l 4567 ."
|
|
32
53
|
},
|
|
33
54
|
"devDependencies": {
|
|
34
55
|
"@stylistic/eslint-plugin": "latest",
|
|
35
56
|
"@types/bun": "latest",
|
|
36
57
|
"@types/uglify-js": "latest",
|
|
37
|
-
"eslint": "latest",
|
|
38
|
-
"eslint-plugin-jsdoc": "latest",
|
|
39
58
|
"mitata": "latest",
|
|
40
|
-
"prettier": "^3.
|
|
59
|
+
"prettier": "^3.8.1",
|
|
41
60
|
"tsx": "latest",
|
|
42
61
|
"typescript": "latest",
|
|
43
62
|
"typescript-eslint": "latest",
|
package/pipeline/registry.d.ts
CHANGED
package/pipeline/types.d.ts
CHANGED
package/platform/node.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Canvas,createCanvas as napiCreateCanvas,loadImage as napiLoadImage}from"@napi-rs/canvas";export let nodePlatform={createCanvas(width,height){return napiCreateCanvas(width,height)},async loadImage(source){let img=await napiLoadImage(source);let canvas=napiCreateCanvas(img.width,img.height);let ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);return canvas},isCanvas(value){return value instanceof Canvas}};
|
package/platform/web.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export let webPlatform={createCanvas(width,height){if(typeof OffscreenCanvas!=="undefined"){return new OffscreenCanvas(width,height)}if(typeof document!=="undefined"){let c=document.createElement("canvas");c.width=width;c.height=height;return c}throw new Error("No canvas implementation available in this environment.")},async loadImage(source){let blob;if(source instanceof ArrayBuffer){blob=new Blob([source])}else if(typeof source==="string"){let res=await fetch(source);blob=await res.blob()}else{throw new Error("loadImage: unsupported source type")}let bitmap=await createImageBitmap(blob);let canvas=webPlatform.createCanvas(bitmap.width,bitmap.height);let ctx=canvas.getContext("2d");ctx.drawImage(bitmap,0,0);bitmap.close();return canvas},isCanvas(value){if(typeof HTMLCanvasElement!=="undefined"&&value instanceof HTMLCanvasElement){return true}if(typeof OffscreenCanvas!=="undefined"&&value instanceof OffscreenCanvas){return true}return false}};
|