opencv4nodejs-prebuilt-install
Simple installation Opencv versions for node with pre-compiled bindings
Cross-platform!
Supports
- Windows, Linux , MacOS
- node 16,17,18,19,20,21,22
- 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.2",
"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
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);
}
static NAN_METHOD(Invert);
static NAN_METHOD(InvertAsync);
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());
};
};
};
export function invert(mat: Mat, flags?: number): Mat;
export function invertAsync(mat: Mat, flags?: number): Promise<Mat>;