justadudewhohacks / justadudewhohacks/opencv4nodejs

macOS Big Sur Install ALMOST THERE!!! (but fails because of Tracker / MultiTracker)

Open
#805 19 comments 5 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
5.1k
Forks
826
PR merge metrics
No merged PRs in 30d

Description

**Trying the manual install, as per below** (because the easier `npm install opencv4nodejs` fails in all sorts of ways!)

[march 23 notation: see next comment on this thread for possible culprit (was api changed to a legacy api by opencv.org?)]

[But now this seems important]
`brew-installed OpenCV4 (version 4.5.1_3)`

But first, some info:
```
ProductName: macOS
ProductVersion: 11.2.3 (Big Sur) [so, up to date]
BuildVersion: 20D91
```
`uname -a: Darwin xxxxx.local 20.3.0 Darwin Kernel Version 20.3.0: xxxxxxnu-7195.81.3~1/RELEASE_X86_64 x86_64`
`node -v: v15.12.0`
`node-gyp -v: v7.1.2`
`python --version: Python 3.9.2`

Added to `~/.zshrc` for command line:
```
export OPENCV4NODEJS_DISABLE_AUTOBUILD=1
export OPENCV4NODEJS_DISABLE_EXTERNAL_MEM_TRACKING=1
export OPENCV_INCLUDE_DIR=/usr/local/Cellar/opencv/4.5.1_3/include/opencv4
export OPENCV_LIB_DIR=/usr/local/Cellar/opencv/4.5.1_3/lib
export OPENCV_BIN_DIR=/usr/local/Cellar/opencv/4.5.1_3/bin
export PATH=/usr/local/Cellar/opencv/4.5.1_3/bin:$PATH
set | grep OPEN
echo "\nall set for opencv4nodejs\nPATH=$PATH\n"
```

WITH OUTPUT (for new shell):
```
HELLO frederico, you b in ZSH mode, NOT bash

OPENCV4NODEJS_DISABLE_AUTOBUILD=1
OPENCV4NODEJS_DISABLE_EXTERNAL_MEM_TRACKING=1
OPENCV_BIN_DIR=/usr/local/Cellar/opencv/4.5.1_3/bin
OPENCV_INCLUDE_DIR=/usr/local/Cellar/opencv/4.5.1_3/include/opencv4
OPENCV_LIB_DIR=/usr/local/Cellar/opencv/4.5.1_3/lib

all set for opencv4nodejs

PATH=/usr/local/Cellar/opencv/4.5.1_3/bin:/Users/freddy/.pyenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands
```
THEN, `npm install opencv4nodejs` RESULTS:
```
added 30 packages, and audited 33 packages in 44s
found 0 vulnerabilities
```

THEN `cd node_modules/opencv4nodejs/build` and `make V=1` RESULTS:
```
c++ -o Release/obj.target/opencv4nodejs/cc/tracking/tracking.o ../cc/tracking/tracking.cc '-DNODE_GYP_MODULE_NAME=opencv4nodejs' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DOPENCV4NODEJS_FOUND_LIBRARY_CORE' '-DOPENCV4NODEJS_FOUND_LIBRARY_HIGHGUI' '-DOPENCV4NODEJS_FOUND_LIBRARY_IMGCODECS' '-DOPENCV4NODEJS_FOUND_LIBRARY_IMGPROC' '-DOPENCV4NODEJS_FOUND_LIBRARY_FEATURES2D' '-DOPENCV4NODEJS_FOUND_LIBRARY_CALIB3D' '-DOPENCV4NODEJS_FOUND_LIBRARY_PHOTO' '-DOPENCV4NODEJS_FOUND_LIBRARY_OBJDETECT' '-DOPENCV4NODEJS_FOUND_LIBRARY_ML' '-DOPENCV4NODEJS_FOUND_LIBRARY_VIDEO' '-DOPENCV4NODEJS_FOUND_LIBRARY_VIDEOIO' '-DOPENCV4NODEJS_FOUND_LIBRARY_VIDEOSTAB' '-DOPENCV4NODEJS_FOUND_LIBRARY_DNN' '-DOPENCV4NODEJS_FOUND_LIBRARY_FACE' '-DOPENCV4NODEJS_FOUND_LIBRARY_TEXT' '-DOPENCV4NODEJS_FOUND_LIBRARY_TRACKING' '-DOPENCV4NODEJS_FOUND_LIBRARY_XFEATURES2D' '-DOPENCV4NODEJS_FOUND_LIBRARY_XIMGPROC' '-DBUILDING_NODE_EXTENSION' -I/Users/freddy/Library/Caches/node-gyp/15.12.0/include/node -I/Users/freddy/Library/Caches/node-gyp/15.12.0/src -I/Users/freddy/Library/Caches/node-gyp/15.12.0/deps/openssl/config -I/Users/freddy/Library/Caches/node-gyp/15.12.0/deps/openssl/openssl/include -I/Users/freddy/Library/Caches/node-gyp/15.12.0/deps/uv/include -I/Users/freddy/Library/Caches/node-gyp/15.12.0/deps/zlib -I/Users/freddy/Library/Caches/node-gyp/15.12.0/deps/v8/include -I/usr/local/Cellar/opencv/4.5.1_3/include/opencv4 -I../cc -I../cc/core -I../../nan -I/Users/freddy/devx/test-python-video-app1/node_modules/native-node-utils/src -O3 -gdwarf-2 -mmacosx-version-min=10.9 -arch x86_64 -Wall -Wendif-labels -W -Wno-unused-parameter -std=gnu++1y -stdlib=libc++ -fno-rtti -fno-strict-aliasing -std=c++11 -stdlib=libc++ -MMD -MF ./Release/.deps/Release/obj.target/opencv4nodejs/cc/tracking/tracking.o.d.raw -c
In file included from ../cc/tracking/tracking.cc:6:
../cc/tracking/./Trackers/TrackerBoosting.h:8:14: error: no member named 'TrackerBoosting' in namespace 'cv'
cv::Ptr tracker;
~~~~^
In file included from ../cc/tracking/tracking.cc:7:
../cc/tracking/./Trackers/TrackerMedianFlow.h:8:14: error: no member named 'TrackerMedianFlow' in namespace 'cv'
cv::Ptr tracker;
~~~~^
In file included from ../cc/tracking/tracking.cc:9:
../cc/tracking/./Trackers/TrackerTLD.h:8:14: error: no member named 'TrackerTLD' in namespace 'cv'
cv::Ptr tracker;
~~~~^
In file included from ../cc/tracking/tracking.cc:13:
../cc/tracking/MultiTracker.h:11:70: error: no member named 'MultiTracker' in namespace 'cv'
class MultiTracker : public FF::ObjectWrap> {
~~~~^
../cc/tracking/MultiTracker.h:30:2: error: expected a type
};
^
../cc/tracking/MultiTracker.h:30:2: error: expected '{' after base class list
In file included from ../cc/tracking/tracking.cc:21:
../cc/tracking/./Trackers/TrackerMOSSE.h:10:14: error: no member named 'TrackerMOSSE' in namespace 'cv'
cv::Ptr tracker;
~~~~^
../cc/tracking/tracking.cc:35:16: error: no type named 'Init' in 'MultiTracker'
MultiTracker::Init(target);
~~~~~~~~~~~~~~^
8 errors generated.
make: *** [Release/obj.target/opencv4nodejs/cc/tracking/tracking.o] Error 1
```

Contributor guide

Open the contributing guide

Research direction

Start with cc/tracking/tracking.cc and the referenced headers under cc/tracking/Trackers, then compare the missing tracker types with the OpenCV 4.5.1 headers installed by Homebrew. Reproduce the failure with make V=1 in node_modules/opencv4nodejs/build. Done means the tracking sources compile successfully against the reported OpenCV version.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, nodejs
Domain
build-system, computer-vision
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.