Skip to content

Commit f0a03a4

Browse files
authored
Merge pull request #670 from guangmingwan/master
fix nodejs 13+
2 parents 6c13234 + 84194be commit f0a03a4

18 files changed

+383
-370
lines changed

src/BackgroundSubtractor.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ void BackgroundSubtractorWrap::Init(Local<Object> target) {
6666
Nan::SetPrototypeMethod(ctor, "noiseSigma", NoiseSigma);
6767
Nan::SetPrototypeMethod(ctor, "backgroundRatio", BackgroundRatio);
6868

69-
target->Set(Nan::New("BackgroundSubtractor").ToLocalChecked(), ctor->GetFunction( Nan::GetCurrentContext() ).ToLocalChecked());
69+
target->Set(Nan::GetCurrentContext(), Nan::New("BackgroundSubtractor").ToLocalChecked(), ctor->GetFunction( Nan::GetCurrentContext() ).ToLocalChecked());
7070
}
7171

7272
NAN_METHOD(BackgroundSubtractorWrap::New) {

src/Calib3D.cc

+33-33
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ inline cv::Size sizeFromArray(Local<Value> jsArray) {
1414
if (jsArray->IsArray()) {
1515
Local<Object> v8sz = jsArray->ToObject(Nan::GetCurrentContext()).ToLocalChecked();
1616

17-
patternSize = cv::Size(v8sz->Get(0)->IntegerValue( Nan::GetCurrentContext() ).ToChecked(),
18-
v8sz->Get(1)->IntegerValue( Nan::GetCurrentContext() ).ToChecked());
17+
patternSize = cv::Size(v8sz->Get(Nan::GetCurrentContext(),0).ToLocalChecked()->IntegerValue( Nan::GetCurrentContext() ).ToChecked(),
18+
v8sz->Get(Nan::GetCurrentContext(),1).ToLocalChecked()->IntegerValue( Nan::GetCurrentContext() ).ToChecked());
1919
} else {
2020
JSTHROW_TYPE("Size is not a valid array");
2121
}
@@ -50,7 +50,7 @@ inline std::vector<cv::Point3f> points3fFromArray(Local<Value> array) {
5050
Local<Array> pointsArray = Local<Array>::Cast(array->ToObject(Nan::GetCurrentContext()).ToLocalChecked());
5151

5252
for (unsigned int i = 0; i < pointsArray->Length(); i++) {
53-
Local<Object> pt = pointsArray->Get(i)->ToObject(Nan::GetCurrentContext()).ToLocalChecked();
53+
Local<Object> pt = pointsArray->Get(Nan::GetCurrentContext(),i).ToLocalChecked()->ToObject(Nan::GetCurrentContext()).ToLocalChecked();
5454
points.push_back(
5555
cv::Point3f(
5656
Nan::To<double>(Nan::Get(pt, Nan::New<String>("x").ToLocalChecked()).ToLocalChecked()).FromJust(),
@@ -73,7 +73,7 @@ inline std::vector<std::vector<cv::Point2f> > points2fFromArrayOfArrays(
7373
Local<Array> pointsArray = Local<Array>::Cast(array->ToObject(Nan::GetCurrentContext()).ToLocalChecked());
7474

7575
for (unsigned int i = 0; i < pointsArray->Length(); i++) {
76-
points.push_back(points2fFromArray(pointsArray->Get(i)));
76+
points.push_back(points2fFromArray(pointsArray->Get(Nan::GetCurrentContext(),i).ToLocalChecked()));
7777
}
7878
} else {
7979
JSTHROW_TYPE("Must pass array of object points for each frame")
@@ -89,7 +89,7 @@ inline std::vector<std::vector<cv::Point3f> > points3fFromArrayOfArrays(
8989
Local<Array> pointsArray = Local<Array>::Cast(array->ToObject(Nan::GetCurrentContext()).ToLocalChecked());
9090

9191
for (unsigned int i = 0; i < pointsArray->Length(); i++) {
92-
points.push_back(points3fFromArray(pointsArray->Get(i)));
92+
points.push_back(points3fFromArray(pointsArray->Get(Nan::GetCurrentContext(),i).ToLocalChecked()));
9393
}
9494
} else {
9595
JSTHROW_TYPE("Must pass array of object points for each frame")
@@ -113,7 +113,7 @@ void Calib3D::Init(Local<Object> target) {
113113
Nan::SetMethod(obj, "computeCorrespondEpilines", ComputeCorrespondEpilines);
114114
Nan::SetMethod(obj, "reprojectImageTo3d", ReprojectImageTo3D);
115115

116-
target->Set(Nan::New("calib3d").ToLocalChecked(), obj);
116+
target->Set(Nan::GetCurrentContext(), Nan::New("calib3d").ToLocalChecked(), obj);
117117
}
118118

119119
// cv::findChessboardCorners
@@ -138,18 +138,18 @@ NAN_METHOD(Calib3D::FindChessboardCorners) {
138138

139139
// Make the return value
140140
Local<Object> ret = Nan::New<Object>();
141-
ret->Set(Nan::New<String>("found").ToLocalChecked(), Nan::New<Boolean>(found));
141+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("found").ToLocalChecked(), Nan::New<Boolean>(found));
142142

143143
Local<Array> cornersArray = Nan::New<Array>(corners.size());
144144
for (unsigned int i = 0; i < corners.size(); i++) {
145145
Local<Object> point_data = Nan::New<Object>();
146-
point_data->Set(Nan::New<String>("x").ToLocalChecked(), Nan::New<Number>(corners[i].x));
147-
point_data->Set(Nan::New<String>("y").ToLocalChecked(), Nan::New<Number>(corners[i].y));
146+
point_data->Set(Nan::GetCurrentContext(), Nan::New<String>("x").ToLocalChecked(), Nan::New<Number>(corners[i].x));
147+
point_data->Set(Nan::GetCurrentContext(), Nan::New<String>("y").ToLocalChecked(), Nan::New<Number>(corners[i].y));
148148

149-
cornersArray->Set(Nan::New<Number>(i), point_data);
149+
cornersArray->Set(Nan::GetCurrentContext(), Nan::New<Number>(i), point_data);
150150
}
151151

152-
ret->Set(Nan::New<String>("corners").ToLocalChecked(), cornersArray);
152+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("corners").ToLocalChecked(), cornersArray);
153153

154154
info.GetReturnValue().Set(ret);
155155
} catch (cv::Exception &e) {
@@ -225,15 +225,15 @@ NAN_METHOD(Calib3D::CalibrateCamera) {
225225
Local<Object> ret = Nan::New<Object>();
226226

227227
// Reprojection error
228-
ret->Set(Nan::New<String>("reprojectionError").ToLocalChecked(), Nan::New<Number>(error));
228+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("reprojectionError").ToLocalChecked(), Nan::New<Number>(error));
229229

230230
// K
231231
Local<Object> KMatrixWrap = Matrix::CreateWrappedFromMat(K);
232-
ret->Set(Nan::New<String>("K").ToLocalChecked(), KMatrixWrap);
232+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("K").ToLocalChecked(), KMatrixWrap);
233233

234234
// dist
235235
Local<Object> distMatrixWrap = Matrix::CreateWrappedFromMat(dist);
236-
ret->Set(Nan::New<String>("distortion").ToLocalChecked(), distMatrixWrap);
236+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("distortion").ToLocalChecked(), distMatrixWrap);
237237

238238
// Per frame R and t, skiping for now
239239

@@ -279,11 +279,11 @@ NAN_METHOD(Calib3D::SolvePnP) {
279279

280280
// rvec
281281
Local<Object> rMatrixWrap = Matrix::CreateWrappedFromMat(rvec);
282-
ret->Set(Nan::New<String>("rvec").ToLocalChecked(), rMatrixWrap);
282+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("rvec").ToLocalChecked(), rMatrixWrap);
283283

284284
// tvec
285285
Local<Object> tMatrixWrap = Matrix::CreateWrappedFromMat(tvec);
286-
ret->Set(Nan::New<String>("tvec").ToLocalChecked(), tMatrixWrap);
286+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("tvec").ToLocalChecked(), tMatrixWrap);
287287

288288
// Return
289289
info.GetReturnValue().Set(ret);
@@ -409,14 +409,14 @@ NAN_METHOD(Calib3D::StereoCalibrate) {
409409
Local<Object> FMatrixWrap = Matrix::CreateWrappedFromMat(F);
410410

411411
// Add to return object
412-
ret->Set(Nan::New<String>("K1").ToLocalChecked(), K1MatrixWrap);
413-
ret->Set(Nan::New<String>("distortion1").ToLocalChecked(), d1MatrixWrap);
414-
ret->Set(Nan::New<String>("K2").ToLocalChecked(), K2MatrixWrap);
415-
ret->Set(Nan::New<String>("distortion2").ToLocalChecked(), d2MatrixWrap);
416-
ret->Set(Nan::New<String>("R").ToLocalChecked(), RMatrixWrap);
417-
ret->Set(Nan::New<String>("t").ToLocalChecked(), tMatrixWrap);
418-
ret->Set(Nan::New<String>("E").ToLocalChecked(), EMatrixWrap);
419-
ret->Set(Nan::New<String>("F").ToLocalChecked(), FMatrixWrap);
412+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("K1").ToLocalChecked(), K1MatrixWrap);
413+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("distortion1").ToLocalChecked(), d1MatrixWrap);
414+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("K2").ToLocalChecked(), K2MatrixWrap);
415+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("distortion2").ToLocalChecked(), d2MatrixWrap);
416+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("R").ToLocalChecked(), RMatrixWrap);
417+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("t").ToLocalChecked(), tMatrixWrap);
418+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("E").ToLocalChecked(), EMatrixWrap);
419+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("F").ToLocalChecked(), FMatrixWrap);
420420

421421
// Return
422422
info.GetReturnValue().Set(ret);
@@ -470,11 +470,11 @@ NAN_METHOD(Calib3D::StereoRectify) {
470470
// Make the return object
471471
Local<Object> ret = Nan::New<Object>();
472472

473-
ret->Set(Nan::New<String>("R1").ToLocalChecked(), Matrix::CreateWrappedFromMat(R1));
474-
ret->Set(Nan::New<String>("R2").ToLocalChecked(), Matrix::CreateWrappedFromMat(R2));
475-
ret->Set(Nan::New<String>("P1").ToLocalChecked(), Matrix::CreateWrappedFromMat(P1));
476-
ret->Set(Nan::New<String>("P2").ToLocalChecked(), Matrix::CreateWrappedFromMat(P2));
477-
ret->Set(Nan::New<String>("Q").ToLocalChecked(), Matrix::CreateWrappedFromMat(Q));
473+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("R1").ToLocalChecked(), Matrix::CreateWrappedFromMat(R1));
474+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("R2").ToLocalChecked(), Matrix::CreateWrappedFromMat(R2));
475+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("P1").ToLocalChecked(), Matrix::CreateWrappedFromMat(P1));
476+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("P2").ToLocalChecked(), Matrix::CreateWrappedFromMat(P2));
477+
ret->Set(Nan::GetCurrentContext(), Nan::New<String>("Q").ToLocalChecked(), Matrix::CreateWrappedFromMat(Q));
478478

479479
// Return the rectification parameters
480480
info.GetReturnValue().Set(ret);
@@ -510,11 +510,11 @@ NAN_METHOD(Calib3D::ComputeCorrespondEpilines) {
510510
for(unsigned int i = 0; i < lines.size(); i++)
511511
{
512512
Local<Object> line_data = Nan::New<Object>();
513-
line_data->Set(Nan::New<String>("a").ToLocalChecked(), Nan::New<Number>(lines[i][0]));
514-
line_data->Set(Nan::New<String>("b").ToLocalChecked(), Nan::New<Number>(lines[i][1]));
515-
line_data->Set(Nan::New<String>("c").ToLocalChecked(), Nan::New<Number>(lines[i][2]));
513+
line_data->Set(Nan::GetCurrentContext(), Nan::New<String>("a").ToLocalChecked(), Nan::New<Number>(lines[i][0]));
514+
line_data->Set(Nan::GetCurrentContext(), Nan::New<String>("b").ToLocalChecked(), Nan::New<Number>(lines[i][1]));
515+
line_data->Set(Nan::GetCurrentContext(), Nan::New<String>("c").ToLocalChecked(), Nan::New<Number>(lines[i][2]));
516516

517-
linesArray->Set(Nan::New<Number>(i), line_data);
517+
linesArray->Set(Nan::GetCurrentContext(), Nan::New<Number>(i), line_data);
518518
}
519519

520520
// Return the lines

src/CamShift.cc

+12-12
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ void TrackedObject::Init(Local<Object> target) {
3333

3434
Nan::SetPrototypeMethod(ctor, "track", Track);
3535

36-
target->Set(Nan::New("TrackedObject").ToLocalChecked(), ctor->GetFunction( Nan::GetCurrentContext() ).ToLocalChecked());
36+
target->Set(Nan::GetCurrentContext(), Nan::New("TrackedObject").ToLocalChecked(), ctor->GetFunction( Nan::GetCurrentContext() ).ToLocalChecked());
3737
}
3838

3939
NAN_METHOD(TrackedObject::New) {
@@ -50,19 +50,19 @@ NAN_METHOD(TrackedObject::New) {
5050
if (info[1]->IsArray()) {
5151
Local<Object> v8rec = info[1]->ToObject(Nan::GetCurrentContext()).ToLocalChecked();
5252
r = cv::Rect(
53-
v8rec->Get(0)->IntegerValue( Nan::GetCurrentContext() ).ToChecked(),
54-
v8rec->Get(1)->IntegerValue( Nan::GetCurrentContext() ).ToChecked(),
55-
v8rec->Get(2)->IntegerValue( Nan::GetCurrentContext() ).ToChecked() - v8rec->Get(0)->IntegerValue( Nan::GetCurrentContext() ).ToChecked(),
56-
v8rec->Get(3)->IntegerValue( Nan::GetCurrentContext() ).ToChecked() - v8rec->Get(1)->IntegerValue( Nan::GetCurrentContext() ).ToChecked());
53+
v8rec->Get(Nan::GetCurrentContext(),0).ToLocalChecked()->IntegerValue( Nan::GetCurrentContext() ).ToChecked(),
54+
v8rec->Get(Nan::GetCurrentContext(),1).ToLocalChecked()->IntegerValue( Nan::GetCurrentContext() ).ToChecked(),
55+
v8rec->Get(Nan::GetCurrentContext(),2).ToLocalChecked()->IntegerValue( Nan::GetCurrentContext() ).ToChecked() - v8rec->Get(Nan::GetCurrentContext(),0).ToLocalChecked()->IntegerValue( Nan::GetCurrentContext() ).ToChecked(),
56+
v8rec->Get(Nan::GetCurrentContext(),3).ToLocalChecked()->IntegerValue( Nan::GetCurrentContext() ).ToChecked() - v8rec->Get(Nan::GetCurrentContext(),1).ToLocalChecked()->IntegerValue( Nan::GetCurrentContext() ).ToChecked());
5757
} else {
5858
JSTHROW_TYPE("Must pass rectangle to track")
5959
}
6060

6161
if (info[2]->IsObject()) {
6262
Local<Object> opts = info[2]->ToObject(Nan::GetCurrentContext()).ToLocalChecked();
6363

64-
if (opts->Get(Nan::New("channel").ToLocalChecked())->IsString()) {
65-
v8::String::Utf8Value c(v8::Isolate::GetCurrent(),opts->Get(Nan::New("channel").ToLocalChecked())->ToString(Nan::GetCurrentContext()).FromMaybe(v8::Local<v8::String>()));
64+
if (opts->Get(Nan::GetCurrentContext(),Nan::New("channel").ToLocalChecked()).ToLocalChecked()->IsString()) {
65+
v8::String::Utf8Value c(v8::Isolate::GetCurrent(),opts->Get(Nan::GetCurrentContext(),Nan::New("channel").ToLocalChecked()).ToLocalChecked()->ToString(Nan::GetCurrentContext()).FromMaybe(v8::Local<v8::String>()));
6666
std::string cc = std::string(*c);
6767

6868
if (cc == "hue" || cc == "h") {
@@ -166,17 +166,17 @@ NAN_METHOD(TrackedObject::Track) {
166166

167167
v8::Local<v8::Array> arr = Nan::New<Array>(4);
168168

169-
arr->Set(0, Nan::New<Number>(bounds.x));
170-
arr->Set(1, Nan::New<Number>(bounds.y));
171-
arr->Set(2, Nan::New<Number>(bounds.x + bounds.width));
172-
arr->Set(3, Nan::New<Number>(bounds.y + bounds.height));
169+
arr->Set(Nan::GetCurrentContext(),0, Nan::New<Number>(bounds.x));
170+
arr->Set(Nan::GetCurrentContext(),1, Nan::New<Number>(bounds.y));
171+
arr->Set(Nan::GetCurrentContext(),2, Nan::New<Number>(bounds.x + bounds.width));
172+
arr->Set(Nan::GetCurrentContext(),3, Nan::New<Number>(bounds.y + bounds.height));
173173

174174
/*
175175
cv::Point2f pts[4];
176176
r.points(pts);
177177
178178
for (int i = 0; i < 8; i += 2) {
179-
arr->Set(i, Nan::New<Number>(pts[i].x));
179+
arr->Set(Nan::GetCurrentContext(), i, Nan::New<Number>(pts[i].x));
180180
arr->Set(i + 1, Nan::New<Number>(pts[i].y));
181181
} */
182182

src/CascadeClassifierWrap.cc

+6-6
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ void CascadeClassifierWrap::Init(Local<Object> target) {
2424

2525
Nan::SetPrototypeMethod(ctor, "detectMultiScale", DetectMultiScale);
2626

27-
target->Set(Nan::New("CascadeClassifier").ToLocalChecked(), ctor->GetFunction( Nan::GetCurrentContext() ).ToLocalChecked());
27+
target->Set(Nan::GetCurrentContext(), Nan::New("CascadeClassifier").ToLocalChecked(), ctor->GetFunction( Nan::GetCurrentContext() ).ToLocalChecked());
2828
}
2929

3030
NAN_METHOD(CascadeClassifierWrap::New) {
@@ -95,11 +95,11 @@ class AsyncDetectMultiScale: public Nan::AsyncWorker {
9595

9696
for (unsigned int i = 0; i < this->res.size(); i++) {
9797
v8::Local < v8::Object > x = Nan::New<v8::Object>();
98-
x->Set(Nan::New("x").ToLocalChecked(), Nan::New < Number > (this->res[i].x));
99-
x->Set(Nan::New("y").ToLocalChecked(), Nan::New < Number > (this->res[i].y));
100-
x->Set(Nan::New("width").ToLocalChecked(), Nan::New < Number > (this->res[i].width));
101-
x->Set(Nan::New("height").ToLocalChecked(), Nan::New < Number > (this->res[i].height));
102-
arr->Set(i, x);
98+
x->Set(Nan::GetCurrentContext(), Nan::New("x").ToLocalChecked(), Nan::New < Number > (this->res[i].x));
99+
x->Set(Nan::GetCurrentContext(), Nan::New("y").ToLocalChecked(), Nan::New < Number > (this->res[i].y));
100+
x->Set(Nan::GetCurrentContext(), Nan::New("width").ToLocalChecked(), Nan::New < Number > (this->res[i].width));
101+
x->Set(Nan::GetCurrentContext(), Nan::New("height").ToLocalChecked(), Nan::New < Number > (this->res[i].height));
102+
arr->Set(Nan::GetCurrentContext(), i, x);
103103
}
104104

105105
argv[0] = Nan::Null();

src/Constants.cc

+7-7
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@
66
#endif
77

88
#define CONST(C) \
9-
obj->Set(Nan::New<String>(#C).ToLocalChecked(), Nan::New<Integer>(C));
9+
obj->Set(Nan::GetCurrentContext(), Nan::New<String>(#C).ToLocalChecked(), Nan::New<Integer>(C));
1010

1111
#define CONST_INT(C) \
12-
obj->Set(Nan::New<String>(#C).ToLocalChecked(), Nan::New<Integer>((int)C));
12+
obj->Set(Nan::GetCurrentContext(), Nan::New<String>(#C).ToLocalChecked(), Nan::New<Integer>((int)C));
1313

1414
#define CONST_DOUBLE(C) \
15-
obj->Set(Nan::New<String>(#C).ToLocalChecked(), Nan::New<Number>(C));
15+
obj->Set(Nan::GetCurrentContext(), Nan::New<String>(#C).ToLocalChecked(), Nan::New<Number>(C));
1616

1717
#define CONST_ENUM(C) \
18-
obj->Set(Nan::New<String>(#C).ToLocalChecked(), Nan::New<Integer>((int)(cv::C)));
18+
obj->Set(Nan::GetCurrentContext(), Nan::New<String>(#C).ToLocalChecked(), Nan::New<Integer>((int)(cv::C)));
1919

2020
void Constants::Init(Local<Object> target) {
2121
Nan::Persistent<Object> inner;
@@ -126,10 +126,10 @@ void Constants::Init(Local<Object> target) {
126126
CONST_ENUM(CMP_LE)
127127
CONST_ENUM(CMP_NE)
128128

129-
target->Set(Nan::New("TERM_CRITERIA_EPS").ToLocalChecked(), Nan::New<Integer>((int)cv::TermCriteria::EPS));
130-
target->Set(Nan::New("TERM_CRITERIA_COUNT").ToLocalChecked(), Nan::New<Integer>((int)cv::TermCriteria::COUNT));
129+
target->Set(Nan::GetCurrentContext(), Nan::New("TERM_CRITERIA_EPS").ToLocalChecked(), Nan::New<Integer>((int)cv::TermCriteria::EPS));
130+
target->Set(Nan::GetCurrentContext(), Nan::New("TERM_CRITERIA_COUNT").ToLocalChecked(), Nan::New<Integer>((int)cv::TermCriteria::COUNT));
131131

132-
target->Set(Nan::New("Constants").ToLocalChecked(), obj);
132+
target->Set(Nan::GetCurrentContext(), Nan::New("Constants").ToLocalChecked(), obj);
133133
}
134134

135135
#undef CONST

0 commit comments

Comments
 (0)