mirror of
https://github.com/peterbraden/node-opencv.git
synced 2025-12-08 19:45:55 +00:00
Merge pull request #118 from ytham/blur
Added medianBlur and bilateralFilter
This commit is contained in:
commit
8822bb4c01
@ -58,6 +58,8 @@ Matrix::Init(Handle<Object> target) {
|
|||||||
NODE_SET_PROTOTYPE_METHOD(constructor, "convertGrayscale", ConvertGrayscale);
|
NODE_SET_PROTOTYPE_METHOD(constructor, "convertGrayscale", ConvertGrayscale);
|
||||||
NODE_SET_PROTOTYPE_METHOD(constructor, "convertHSVscale", ConvertHSVscale);
|
NODE_SET_PROTOTYPE_METHOD(constructor, "convertHSVscale", ConvertHSVscale);
|
||||||
NODE_SET_PROTOTYPE_METHOD(constructor, "gaussianBlur", GaussianBlur);
|
NODE_SET_PROTOTYPE_METHOD(constructor, "gaussianBlur", GaussianBlur);
|
||||||
|
NODE_SET_PROTOTYPE_METHOD(constructor, "medianBlur", MedianBlur);
|
||||||
|
NODE_SET_PROTOTYPE_METHOD(constructor, "bilateralFilter", BilateralFilter);
|
||||||
NODE_SET_PROTOTYPE_METHOD(constructor, "copy", Copy);
|
NODE_SET_PROTOTYPE_METHOD(constructor, "copy", Copy);
|
||||||
NODE_SET_PROTOTYPE_METHOD(constructor, "flip", Flip);
|
NODE_SET_PROTOTYPE_METHOD(constructor, "flip", Flip);
|
||||||
NODE_SET_PROTOTYPE_METHOD(constructor, "roi", ROI);
|
NODE_SET_PROTOTYPE_METHOD(constructor, "roi", ROI);
|
||||||
@ -809,6 +811,63 @@ Matrix::GaussianBlur(const v8::Arguments& args) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Handle<Value>
|
||||||
|
Matrix::MedianBlur(const v8::Arguments &args) {
|
||||||
|
HandleScope scope;
|
||||||
|
cv::Mat blurred;
|
||||||
|
int ksize = 3;
|
||||||
|
Matrix *self = ObjectWrap::Unwrap<Matrix>(args.This());
|
||||||
|
|
||||||
|
if (args[0]->IsNumber()) {
|
||||||
|
ksize = args[0]->IntegerValue();
|
||||||
|
if ((ksize % 2) == 0) {
|
||||||
|
return ThrowException(Exception::TypeError(String::New(
|
||||||
|
"'ksize' argument must be a positive odd integer")));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return ThrowException(Exception::TypeError(String::New(
|
||||||
|
"'ksize' argument must be a positive odd integer")));
|
||||||
|
}
|
||||||
|
|
||||||
|
cv::medianBlur(self->mat, blurred, ksize);
|
||||||
|
blurred.copyTo(self->mat);
|
||||||
|
|
||||||
|
return scope.Close(v8::Null());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Handle<Value>
|
||||||
|
Matrix::BilateralFilter(const v8::Arguments &args) {
|
||||||
|
HandleScope scope;
|
||||||
|
cv::Mat filtered;
|
||||||
|
int d = 15;
|
||||||
|
double sigmaColor = 80;
|
||||||
|
double sigmaSpace = 80;
|
||||||
|
int borderType = cv::BORDER_DEFAULT;
|
||||||
|
|
||||||
|
Matrix *self = ObjectWrap::Unwrap<Matrix>(args.This());
|
||||||
|
|
||||||
|
if (args.Length() != 0) {
|
||||||
|
if (args.Length() < 3 || args.Length() > 4) {
|
||||||
|
return ThrowException(Exception::TypeError(String::New(
|
||||||
|
"BilateralFilter takes 0, 3, or 4 arguments")));
|
||||||
|
} else {
|
||||||
|
d = args[0]->IntegerValue();
|
||||||
|
sigmaColor = args[1]->NumberValue();
|
||||||
|
sigmaSpace = args[2]->NumberValue();
|
||||||
|
if (args.Length() == 4) {
|
||||||
|
borderType = args[3]->IntegerValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cv::bilateralFilter(self->mat, filtered, d, sigmaColor, sigmaSpace, borderType);
|
||||||
|
filtered.copyTo(self->mat);
|
||||||
|
|
||||||
|
return scope.Close(v8::Null());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Handle<Value>
|
Handle<Value>
|
||||||
Matrix::Copy(const v8::Arguments& args) {
|
Matrix::Copy(const v8::Arguments& args) {
|
||||||
HandleScope scope;
|
HandleScope scope;
|
||||||
|
|||||||
@ -48,6 +48,8 @@ class Matrix: public node::ObjectWrap {
|
|||||||
JSFUNC(ConvertGrayscale)
|
JSFUNC(ConvertGrayscale)
|
||||||
JSFUNC(ConvertHSVscale)
|
JSFUNC(ConvertHSVscale)
|
||||||
JSFUNC(GaussianBlur)
|
JSFUNC(GaussianBlur)
|
||||||
|
JSFUNC(MedianBlur)
|
||||||
|
JSFUNC(BilateralFilter)
|
||||||
JSFUNC(Copy)
|
JSFUNC(Copy)
|
||||||
JSFUNC(Flip)
|
JSFUNC(Flip)
|
||||||
JSFUNC(ROI)
|
JSFUNC(ROI)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user