node-opencv
node-opencv copied to clipboard
findContour examples not working
Examples that make use of findContour() are not working - contours.js, detect-shapes.js, quad-crosses.js
findContour() is returning 0 contours. The image after convertGrayscale(), canny(), dialte() looks ok. But findContour() is not working.
car-detection.js works ok.
Let me know if you need further info.
Thanks Rajendran
** Update
After downgrading to 0.7.0, examples work ok - contours.js, detect-shapes.js, quad-crosses.js, car_detection.js
npm install [email protected]
Thanks Rajendran
It must be something in the c++ code. It's not working in 0.7.0 (c1edd1b1ab6f82e5816fec3afa8bf596d2f8972d) when I use the new binaries. @kaosat-dev can you check this. I think your updates are the problem. But I might be wrong. I haven't watched into it.
I'm working on a branch that will run all of the examples as tests so we know when we regress them. I'll see if I can repro there.
It's working for me, and I just checked in a branch with this running in the tests, so we'll see if it works for travis-ci too...
@marcbachmann strange, just like @peterbraden , it works without issues for me too...will try to do a clean build from scratch to see if I can reproduce
Hi guys, @peterbraden as far as I can see, Matrix::FindContours in Matrix.cc(https://github.com/peterbraden/node-opencv/blob/master/src/Matrix.cc) just returns new instance of Contour class. I'm facing the same problem with 0 returned and seems that the whole object is clean. Also, I can see contours on an image after .canny was applied, but they're not available from code.
I've possibly found the reason:
First, the cv::findContours call was removed in this commit (line 1234) https://github.com/peterbraden/node-opencv/commit/19058ecea9bffc6966f379ee70ea65b9503bb6c5
And the rest was removed here https://github.com/peterbraden/node-opencv/commit/34eb174ae89af61a42b303cf67af21f1f2a1c716
I've managed to make it working with adding this into Matrix::FindContours (Matrix.cc):
/* + */ Matrix *self = ObjectWrap::Unwrap<Matrix>(args.This());
Local<Object> conts_to_return= NanNew(Contour::constructor)->GetFunction()->NewInstance();
/* + */ Contour *contours = ObjectWrap::Unwrap<Contour>(conts_to_return);
/* + */ cv::findContours(self->mat, contours->contours, contours->hierarchy, mode, chain);
Then recompiled, tested and findContours became working without any visible issues.
Even in 6.0.0, I'm getting zero contours on the attached input (with no options to findContours).