Add kernel argument to Dilate and Erode methods

A second optional argument can be passed to `mat.erode` and
`mat.dilate`. This argument define the kernel used for this
morphological operation. A kernel can be generated by the
GetStructuringElement function.
This commit is contained in:
jspdown 2015-11-22 14:45:02 +01:00
parent e3090f4176
commit 162b091f25

View File

@ -1341,7 +1341,13 @@ NAN_METHOD(Matrix::Dilate) {
Matrix *self = Nan::ObjectWrap::Unwrap<Matrix>(info.This());
int niters = info[0]->NumberValue();
cv::dilate(self->mat, self->mat, cv::Mat(), cv::Point(-1, -1), niters);
cv::Mat kernel = cv::Mat();
if (info.Length() == 2) {
Matrix *kernelMatrix = Nan::ObjectWrap::Unwrap<Matrix>(info[1]->ToObject());
kernel = kernelMatrix->mat;
}
cv::dilate(self->mat, self->mat, kernel, cv::Point(-1, -1), niters);
info.GetReturnValue().Set(Nan::Null());
}
@ -1352,7 +1358,12 @@ NAN_METHOD(Matrix::Erode) {
Matrix *self = Nan::ObjectWrap::Unwrap<Matrix>(info.This());
int niters = info[0]->NumberValue();
cv::erode(self->mat, self->mat, cv::Mat(), cv::Point(-1, -1), niters);
cv::Mat kernel = cv::Mat();
if (info.Length() == 2) {
Matrix *kernelMatrix = Nan::ObjectWrap::Unwrap<Matrix>(info[1]->ToObject());
kernel = kernelMatrix->mat;
}
cv::erode(self->mat, self->mat, kernel, cv::Point(-1, -1), niters);
info.GetReturnValue().Set(Nan::Null());
}