mirror of
https://github.com/peterbraden/node-opencv.git
synced 2025-12-08 19:45:55 +00:00
WIP on camshift re #22
This commit is contained in:
parent
b5fe027703
commit
a9717c7dc0
@ -17,6 +17,7 @@ TrackedObject::Init(Handle<Object> target) {
|
||||
//Local<ObjectTemplate> proto = constructor->PrototypeTemplate();
|
||||
|
||||
target->Set(String::NewSymbol("TrackedObject"), constructor->GetFunction());
|
||||
NODE_SET_PROTOTYPE_METHOD(constructor, "track", Track);
|
||||
};
|
||||
|
||||
|
||||
@ -37,7 +38,6 @@ TrackedObject::New(const Arguments &args) {
|
||||
|
||||
TrackedObject::TrackedObject(cv::Mat image, cv::Rect rect){
|
||||
|
||||
|
||||
// Store HSV Hue Image
|
||||
cv::cvtColor(image, hsv, CV_BGR2HSV); // convert to HSV space
|
||||
//mask out-of-range values
|
||||
@ -50,9 +50,22 @@ TrackedObject::TrackedObject(cv::Mat image, cv::Rect rect){
|
||||
//extract the hue channel, split: src, dest channels
|
||||
int from_to[] = { 0,0, 1,-1, 2,-1, 3,-1};
|
||||
cv::mixChannels(&hsv, 1, &hue, 1, from_to, 4);
|
||||
|
||||
// Calculate Histogram
|
||||
int hbins = 30, sbins = 32;
|
||||
int histSizes[] = {hbins, sbins};
|
||||
float hranges[] = { 0, 180 };
|
||||
// saturation varies from 0 (black-gray-white) to
|
||||
// 255 (pure spectrum color)
|
||||
float sranges[] = { 0, 256 };
|
||||
const float* ranges[] = { hranges, sranges };
|
||||
|
||||
cv::calcHist(&hue, 1, 0, mask, hist, 2, histSizes, ranges, true, false);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Handle<Value>
|
||||
TrackedObject::Track(const v8::Arguments& args){
|
||||
SETUP_FUNCTION(TrackedObject)
|
||||
@ -69,6 +82,15 @@ TrackedObject::Track(const v8::Arguments& args){
|
||||
r = cv::CamShift(self->prob, self->prev_rect,
|
||||
cv::TermCriteria(CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1));
|
||||
|
||||
v8::Local<v8::Array> arr = v8::Array::New(4);
|
||||
|
||||
cv::Point2f pts[4];
|
||||
r.points(pts);
|
||||
|
||||
for (int i=0; i<8; i+=2){
|
||||
arr->Set(i, Number::New(pts[i].x));
|
||||
arr->Set(i+1, Number::New(pts[i].y));
|
||||
}
|
||||
return scope.Close(arr);
|
||||
|
||||
return Undefined();
|
||||
}
|
||||
|
||||
@ -8,7 +8,7 @@ class TrackedObject: public node::ObjectWrap {
|
||||
cv::Mat mask;
|
||||
cv::Mat prob;
|
||||
|
||||
//cv::Histogram* hist;
|
||||
cv::Mat hist;
|
||||
cv::Rect prev_rect;
|
||||
// cv::Box2D curr_box;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user