Skip to content

Commit 9e2476a

Browse files
author
codeboost
committed
calcHist runs on MacOS
1 parent 8d82ed9 commit 9e2476a

File tree

5 files changed

+336
-349
lines changed

5 files changed

+336
-349
lines changed

bea/opencv.bea

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,16 @@
55
#C++ code added to the header file
66
@header
77
\#include <v8.h>
8-
9-
#C++ code added to the cpp file
10-
@cpp
118
\#include "cvcheck.h"
129
\#include <cv.hpp>
1310
\#include <highgui.h>
1411
\#include "bea.h"
12+
\#include "customTypes.h"
13+
14+
#C++ code added to the cpp file
15+
@cpp
1516
\#include "opencvjs.h"
16-
\#include "customTypes.h"
17+
1718
using namespace cv;
1819

1920

scripts/opencv.coffee

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#This should be done in the C++ addon ?
2-
opencvjs = require '../build/Debug/addon.node'
2+
opencvjs = require '../build/Release/addon.node'
3+
34
_ = require 'underscore'
45
cv = opencvjs.OpenCV
56
Mat = opencvjs.Mat

scripts/opencv.js

Lines changed: 0 additions & 19 deletions
This file was deleted.

src/opencvjs.cpp

Lines changed: 0 additions & 325 deletions
Original file line numberDiff line numberDiff line change
@@ -1,331 +1,6 @@
1-
#include "cvcheck.h"
2-
#include <cv.hpp>
3-
#include <highgui.h>
4-
#include "bea.h"
51
#include "opencvjs.h"
6-
#include "customTypes.h"
72
using namespace cv;
83
namespace bea {
9-
template<> struct Convert<cv::TermCriteria> {
10-
static bool Is(v8::Handle<v8::Value> v) {
11-
return !v.IsEmpty() && v->IsObject();
12-
}
13-
14-
static cv::TermCriteria FromJS(v8::Handle<v8::Value> v, int nArg) {
15-
const char* msg = "Object with the following properties expected: type, maxCount, epsilon. This will be cast to 'cv::TermCriteria'";
16-
if (!Is(v)) BEATHROW();
17-
v8::HandleScope scope;
18-
v8::Local<v8::Object> obj = v->ToObject();
19-
cv::TermCriteria ret;
20-
ret.type = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("type")), nArg);
21-
ret.maxCount = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("maxCount")), nArg);
22-
ret.epsilon = bea::Convert<double>::FromJS(obj->Get(v8::String::NewSymbol("epsilon")), nArg);
23-
return ret;
24-
}
25-
26-
static v8::Handle<v8::Value> ToJS(cv::TermCriteria const& v) {
27-
v8::HandleScope scope;
28-
v8::Local<v8::Object> obj = v8::Object::New();
29-
obj->Set(v8::String::NewSymbol("type"), bea::Convert<int>::ToJS(v.type));
30-
obj->Set(v8::String::NewSymbol("maxCount"), bea::Convert<int>::ToJS(v.maxCount));
31-
obj->Set(v8::String::NewSymbol("epsilon"), bea::Convert<double>::ToJS(v.epsilon));
32-
return scope.Close(obj);
33-
}
34-
35-
};
36-
37-
template<> struct Convert<cv::Point> {
38-
static bool Is(v8::Handle<v8::Value> v) {
39-
return !v.IsEmpty() && v->IsObject();
40-
}
41-
42-
static cv::Point FromJS(v8::Handle<v8::Value> v, int nArg) {
43-
const char* msg = "Object with the following properties expected: x, y. This will be cast to 'cv::Point'";
44-
if (!Is(v)) BEATHROW();
45-
v8::HandleScope scope;
46-
v8::Local<v8::Object> obj = v->ToObject();
47-
cv::Point ret;
48-
ret.x = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("x")), nArg);
49-
ret.y = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("y")), nArg);
50-
return ret;
51-
}
52-
53-
static v8::Handle<v8::Value> ToJS(cv::Point const& v) {
54-
v8::HandleScope scope;
55-
v8::Local<v8::Object> obj = v8::Object::New();
56-
obj->Set(v8::String::NewSymbol("x"), bea::Convert<int>::ToJS(v.x));
57-
obj->Set(v8::String::NewSymbol("y"), bea::Convert<int>::ToJS(v.y));
58-
return scope.Close(obj);
59-
}
60-
61-
};
62-
63-
template<> struct Convert<cv::Point2f> {
64-
static bool Is(v8::Handle<v8::Value> v) {
65-
return !v.IsEmpty() && v->IsObject();
66-
}
67-
68-
static cv::Point2f FromJS(v8::Handle<v8::Value> v, int nArg) {
69-
const char* msg = "Object with the following properties expected: x, y. This will be cast to 'cv::Point2f'";
70-
if (!Is(v)) BEATHROW();
71-
v8::HandleScope scope;
72-
v8::Local<v8::Object> obj = v->ToObject();
73-
cv::Point2f ret;
74-
ret.x = bea::Convert<float>::FromJS(obj->Get(v8::String::NewSymbol("x")), nArg);
75-
ret.y = bea::Convert<float>::FromJS(obj->Get(v8::String::NewSymbol("y")), nArg);
76-
return ret;
77-
}
78-
79-
static v8::Handle<v8::Value> ToJS(cv::Point2f const& v) {
80-
v8::HandleScope scope;
81-
v8::Local<v8::Object> obj = v8::Object::New();
82-
obj->Set(v8::String::NewSymbol("x"), bea::Convert<float>::ToJS(v.x));
83-
obj->Set(v8::String::NewSymbol("y"), bea::Convert<float>::ToJS(v.y));
84-
return scope.Close(obj);
85-
}
86-
87-
};
88-
89-
template<> struct Convert<cv::Size> {
90-
static bool Is(v8::Handle<v8::Value> v) {
91-
return !v.IsEmpty() && v->IsObject();
92-
}
93-
94-
static cv::Size FromJS(v8::Handle<v8::Value> v, int nArg) {
95-
const char* msg = "Object with the following properties expected: width, height. This will be cast to 'cv::Size'";
96-
if (!Is(v)) BEATHROW();
97-
v8::HandleScope scope;
98-
v8::Local<v8::Object> obj = v->ToObject();
99-
cv::Size ret;
100-
ret.width = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("width")), nArg);
101-
ret.height = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("height")), nArg);
102-
return ret;
103-
}
104-
105-
static v8::Handle<v8::Value> ToJS(cv::Size const& v) {
106-
v8::HandleScope scope;
107-
v8::Local<v8::Object> obj = v8::Object::New();
108-
obj->Set(v8::String::NewSymbol("width"), bea::Convert<int>::ToJS(v.width));
109-
obj->Set(v8::String::NewSymbol("height"), bea::Convert<int>::ToJS(v.height));
110-
return scope.Close(obj);
111-
}
112-
113-
};
114-
115-
template<> struct Convert<cv::Size2f> {
116-
static bool Is(v8::Handle<v8::Value> v) {
117-
return !v.IsEmpty() && v->IsObject();
118-
}
119-
120-
static cv::Size2f FromJS(v8::Handle<v8::Value> v, int nArg) {
121-
const char* msg = "Object with the following properties expected: width, height. This will be cast to 'cv::Size2f'";
122-
if (!Is(v)) BEATHROW();
123-
v8::HandleScope scope;
124-
v8::Local<v8::Object> obj = v->ToObject();
125-
cv::Size2f ret;
126-
ret.width = bea::Convert<float>::FromJS(obj->Get(v8::String::NewSymbol("width")), nArg);
127-
ret.height = bea::Convert<float>::FromJS(obj->Get(v8::String::NewSymbol("height")), nArg);
128-
return ret;
129-
}
130-
131-
static v8::Handle<v8::Value> ToJS(cv::Size2f const& v) {
132-
v8::HandleScope scope;
133-
v8::Local<v8::Object> obj = v8::Object::New();
134-
obj->Set(v8::String::NewSymbol("width"), bea::Convert<float>::ToJS(v.width));
135-
obj->Set(v8::String::NewSymbol("height"), bea::Convert<float>::ToJS(v.height));
136-
return scope.Close(obj);
137-
}
138-
139-
};
140-
141-
template<> struct Convert<cv::Rect> {
142-
static bool Is(v8::Handle<v8::Value> v) {
143-
return !v.IsEmpty() && v->IsObject();
144-
}
145-
146-
static cv::Rect FromJS(v8::Handle<v8::Value> v, int nArg) {
147-
const char* msg = "Object with the following properties expected: x, y, width, height. This will be cast to 'cv::Rect'";
148-
if (!Is(v)) BEATHROW();
149-
v8::HandleScope scope;
150-
v8::Local<v8::Object> obj = v->ToObject();
151-
cv::Rect ret;
152-
ret.x = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("x")), nArg);
153-
ret.y = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("y")), nArg);
154-
ret.width = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("width")), nArg);
155-
ret.height = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("height")), nArg);
156-
return ret;
157-
}
158-
159-
static v8::Handle<v8::Value> ToJS(cv::Rect const& v) {
160-
v8::HandleScope scope;
161-
v8::Local<v8::Object> obj = v8::Object::New();
162-
obj->Set(v8::String::NewSymbol("x"), bea::Convert<int>::ToJS(v.x));
163-
obj->Set(v8::String::NewSymbol("y"), bea::Convert<int>::ToJS(v.y));
164-
obj->Set(v8::String::NewSymbol("width"), bea::Convert<int>::ToJS(v.width));
165-
obj->Set(v8::String::NewSymbol("height"), bea::Convert<int>::ToJS(v.height));
166-
return scope.Close(obj);
167-
}
168-
169-
};
170-
171-
template<> struct Convert<cv::Range> {
172-
static bool Is(v8::Handle<v8::Value> v) {
173-
return !v.IsEmpty() && v->IsObject();
174-
}
175-
176-
static cv::Range FromJS(v8::Handle<v8::Value> v, int nArg) {
177-
const char* msg = "Object with the following properties expected: start, end. This will be cast to 'cv::Range'";
178-
if (!Is(v)) BEATHROW();
179-
v8::HandleScope scope;
180-
v8::Local<v8::Object> obj = v->ToObject();
181-
cv::Range ret;
182-
ret.start = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("start")), nArg);
183-
ret.end = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("end")), nArg);
184-
return ret;
185-
}
186-
187-
static v8::Handle<v8::Value> ToJS(cv::Range const& v) {
188-
v8::HandleScope scope;
189-
v8::Local<v8::Object> obj = v8::Object::New();
190-
obj->Set(v8::String::NewSymbol("start"), bea::Convert<int>::ToJS(v.start));
191-
obj->Set(v8::String::NewSymbol("end"), bea::Convert<int>::ToJS(v.end));
192-
return scope.Close(obj);
193-
}
194-
195-
};
196-
197-
template<> struct Convert<cv::RotatedRect> {
198-
static bool Is(v8::Handle<v8::Value> v) {
199-
return !v.IsEmpty() && v->IsObject();
200-
}
201-
202-
static cv::RotatedRect FromJS(v8::Handle<v8::Value> v, int nArg) {
203-
const char* msg = "Object with the following properties expected: center, size, angle. This will be cast to 'cv::RotatedRect'";
204-
if (!Is(v)) BEATHROW();
205-
v8::HandleScope scope;
206-
v8::Local<v8::Object> obj = v->ToObject();
207-
cv::RotatedRect ret;
208-
ret.center = bea::Convert<cv::Point2f>::FromJS(obj->Get(v8::String::NewSymbol("center")), nArg);
209-
ret.size = bea::Convert<cv::Size2f>::FromJS(obj->Get(v8::String::NewSymbol("size")), nArg);
210-
ret.angle = bea::Convert<float>::FromJS(obj->Get(v8::String::NewSymbol("angle")), nArg);
211-
return ret;
212-
}
213-
214-
static v8::Handle<v8::Value> ToJS(cv::RotatedRect const& v) {
215-
v8::HandleScope scope;
216-
v8::Local<v8::Object> obj = v8::Object::New();
217-
obj->Set(v8::String::NewSymbol("center"), bea::Convert<cv::Point2f>::ToJS(v.center));
218-
obj->Set(v8::String::NewSymbol("size"), bea::Convert<cv::Size2f>::ToJS(v.size));
219-
obj->Set(v8::String::NewSymbol("angle"), bea::Convert<float>::ToJS(v.angle));
220-
return scope.Close(obj);
221-
}
222-
223-
};
224-
225-
template<> struct Convert<cv::minMaxLocRet> {
226-
static bool Is(v8::Handle<v8::Value> v) {
227-
return !v.IsEmpty() && v->IsObject();
228-
}
229-
230-
static cv::minMaxLocRet FromJS(v8::Handle<v8::Value> v, int nArg) {
231-
const char* msg = "Object with the following properties expected: minVal, maxVal, minIdx, maxIdx. This will be cast to 'cv::minMaxLocRet'";
232-
if (!Is(v)) BEATHROW();
233-
v8::HandleScope scope;
234-
v8::Local<v8::Object> obj = v->ToObject();
235-
cv::minMaxLocRet ret;
236-
ret.minVal = bea::Convert<double>::FromJS(obj->Get(v8::String::NewSymbol("minVal")), nArg);
237-
ret.maxVal = bea::Convert<double>::FromJS(obj->Get(v8::String::NewSymbol("maxVal")), nArg);
238-
ret.minIdx = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("minIdx")), nArg);
239-
ret.maxIdx = bea::Convert<int>::FromJS(obj->Get(v8::String::NewSymbol("maxIdx")), nArg);
240-
return ret;
241-
}
242-
243-
static v8::Handle<v8::Value> ToJS(cv::minMaxLocRet const& v) {
244-
v8::HandleScope scope;
245-
v8::Local<v8::Object> obj = v8::Object::New();
246-
obj->Set(v8::String::NewSymbol("minVal"), bea::Convert<double>::ToJS(v.minVal));
247-
obj->Set(v8::String::NewSymbol("maxVal"), bea::Convert<double>::ToJS(v.maxVal));
248-
obj->Set(v8::String::NewSymbol("minIdx"), bea::Convert<int>::ToJS(v.minIdx));
249-
obj->Set(v8::String::NewSymbol("maxIdx"), bea::Convert<int>::ToJS(v.maxIdx));
250-
return scope.Close(obj);
251-
}
252-
253-
};
254-
255-
template<> struct Convert<cv::Mat*> {
256-
static bool Is(v8::Handle<v8::Value> v) {
257-
return bea::ExposedClass<cv::Mat>::Is(v);
258-
}
259-
260-
static cv::Mat* FromJS(v8::Handle<v8::Value> v, int nArg) {
261-
return bea::ExposedClass<cv::Mat>::FromJS(v, nArg);
262-
}
263-
264-
static v8::Handle<v8::Value> ToJS(cv::Mat* const& v) {
265-
return bea::ExposedClass<cv::Mat>::ToJS(v);
266-
}
267-
268-
};
269-
270-
template<> struct Convert<cv::VideoCapture*> {
271-
static bool Is(v8::Handle<v8::Value> v) {
272-
return bea::ExposedClass<cv::VideoCapture>::Is(v);
273-
}
274-
275-
static cv::VideoCapture* FromJS(v8::Handle<v8::Value> v, int nArg) {
276-
return bea::ExposedClass<cv::VideoCapture>::FromJS(v, nArg);
277-
}
278-
279-
static v8::Handle<v8::Value> ToJS(cv::VideoCapture* const& v) {
280-
return bea::ExposedClass<cv::VideoCapture>::ToJS(v);
281-
}
282-
283-
};
284-
285-
template<> struct Convert<cv::VideoWriter*> {
286-
static bool Is(v8::Handle<v8::Value> v) {
287-
return bea::ExposedClass<cv::VideoWriter>::Is(v);
288-
}
289-
290-
static cv::VideoWriter* FromJS(v8::Handle<v8::Value> v, int nArg) {
291-
return bea::ExposedClass<cv::VideoWriter>::FromJS(v, nArg);
292-
}
293-
294-
static v8::Handle<v8::Value> ToJS(cv::VideoWriter* const& v) {
295-
return bea::ExposedClass<cv::VideoWriter>::ToJS(v);
296-
}
297-
298-
};
299-
300-
template<> struct Convert<cv::SparseMat*> {
301-
static bool Is(v8::Handle<v8::Value> v) {
302-
return bea::ExposedClass<cv::SparseMat>::Is(v);
303-
}
304-
305-
static cv::SparseMat* FromJS(v8::Handle<v8::Value> v, int nArg) {
306-
return bea::ExposedClass<cv::SparseMat>::FromJS(v, nArg);
307-
}
308-
309-
static v8::Handle<v8::Value> ToJS(cv::SparseMat* const& v) {
310-
return bea::ExposedClass<cv::SparseMat>::ToJS(v);
311-
}
312-
313-
};
314-
315-
template<> struct Convert<cv::CascadeClassifier*> {
316-
static bool Is(v8::Handle<v8::Value> v) {
317-
return bea::ExposedClass<cv::CascadeClassifier>::Is(v);
318-
}
319-
320-
static cv::CascadeClassifier* FromJS(v8::Handle<v8::Value> v, int nArg) {
321-
return bea::ExposedClass<cv::CascadeClassifier>::FromJS(v, nArg);
322-
}
323-
324-
static v8::Handle<v8::Value> ToJS(cv::CascadeClassifier* const& v) {
325-
return bea::ExposedClass<cv::CascadeClassifier>::ToJS(v);
326-
}
327-
328-
};
3294

3305
}
3316

0 commit comments

Comments
 (0)