JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 986
  • Score
    100M100P100Q111119F
  • License MIT

Asynchronous OpenCV 4.x nodejs bindings with JavaScript and TypeScript API.

Package Exports

  • opencv4nodejs-prebuilt-install
  • opencv4nodejs-prebuilt-install/lib/opencv4nodejs.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (opencv4nodejs-prebuilt-install) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

opencv4nodejs-prebuilt-install

Tested Released Supported node versions Supported electron versions

Simple installation Opencv versions for node with pre-compiled bindings

Cross-platform!

Supports

  • Windows, Linux , MacOS
  • node 12,14,15,16,17,18,19,20,21
  • electron 8,9,10,11,12,13,14,15,16,17,18,19,22,23,24,25
  • currently arh x64 (possible M1, arm64 and others if were available hosts with the type of processes)

How to install

npm i opencv4nodejs-prebuilt-install

check supporting platforms and processes!

  • prebuilt in node_modules/opencv4nodejs-prebuilt-install/build

Quick Start with prebuild

const cv = require('opencv4nodejs-prebuilt-install');

With TypeScript

import * as cv from 'opencv4nodejs-prebuilt-install'

Local compiling

Set your own properties inside of package.json for opencv4nodejs up to 4.6.0 depends on necessary versions and flags

  "opencv4nodejs": {
    "autoBuildWithoutContrib": 1,
    "autoBuildOpencvVersion": "4.1.1",
    "autoBuildFlags": "-DBUILD_opencv_world=1 -DBUILD_LIST=core,highgui,videoio -DOPENCV_FORCE_3RDPARTY_BUILD=ON -DBUILD_PNG=ON -DBUILD_TIFF=ON -DBUILD_JASPER=ON -DBUILD_JPEG=ON -DBUILD_ZLIB=ON -DBUILD_OPENEXR=ON -DWITH_FFMPEG=OFF -DWITH_GSTREAMER=ON -DBUILD_USE_SYMLINKS=OFF -DWITH_VTK=OFF",
    "disableAutoBuild": 1
  },
  • Then for building opencv for current processor
npm run create_opencvlib

Result in folder osOpencvWorlds/*/*.tar

  • and then for building opencv for current node with have been prepared files for processor
npm run create_opencvnode_prebuild

Result in folder opencv/build/bin for windows or in opencv/build/lib for linux and darwin

Add bindings to native methods of opencv

Create fork of the repo and add necessary changes then create poll request to the repo and i will recreate libs

For example i was able to add method invert recently

  • added to core.cc
Nan::SetMethod(target, "invert", Invert);
Nan::SetMethod(target, "invertAsync", InvertAsync);

NAN_METHOD(Core::Invert) {
 FF::syncBinding<CoreBindings::Invert>("Core", "Invert", info);
}

NAN_METHOD(Core::InvertAsync) {
 FF::asyncBinding<CoreBindings::Invert>("Core", "Invert", info);
}
  • added to core.h
 static NAN_METHOD(Invert);
 static NAN_METHOD(InvertAsync);
  • added to coreBinding.h
 class Invert : public CvClassMethodBinding<Mat> {
 public:
  void createBinding(std::shared_ptr<FF::Value<cv::Mat>> self) {
         auto flags = opt<FF::IntConverter>("flags", 0);
   auto dst = ret<Mat::Converter>("dst");

   executeBinding = [=]() {
    cv::invert(self->ref(), dst->ref(), flags->ref());
   };
  };
 };
  • added to cv.d.ts
export function invert(mat: Mat, flags?: number): Mat;
export function invertAsync(mat: Mat, flags?: number): Promise<Mat>;