mirror of
https://github.com/peterbraden/node-opencv.git
synced 2025-12-08 19:45:55 +00:00
commit
d291d89771
@ -1,6 +1,7 @@
|
||||
#include "Contours.h"
|
||||
#include "Matrix.h"
|
||||
#include "OpenCV.h"
|
||||
#include <string.h>
|
||||
#include <nan.h>
|
||||
|
||||
Nan::Persistent<FunctionTemplate> Matrix::constructor;
|
||||
@ -1629,25 +1630,62 @@ NAN_METHOD(Matrix::Threshold) {
|
||||
|
||||
double threshold = info[0]->NumberValue();
|
||||
double maxVal = info[1]->NumberValue();
|
||||
|
||||
int typ = cv::THRESH_BINARY;
|
||||
if (info.Length() == 3) {
|
||||
// typ = info[2]->IntegerValue();
|
||||
|
||||
if (info.Length() >= 3) {
|
||||
Nan::Utf8String typstr(info[2]);
|
||||
|
||||
if (strcmp(*typstr, "Binary") == 0) {
|
||||
typ = 0;
|
||||
// Uses default value
|
||||
}
|
||||
if (strcmp(*typstr, "Binary Inverted") == 0) {
|
||||
typ = 1;
|
||||
else if (strcmp(*typstr, "Binary Inverted") == 0) {
|
||||
typ = cv::THRESH_BINARY_INV;
|
||||
}
|
||||
if (strcmp(*typstr, "Threshold Truncated") == 0) {
|
||||
typ = 2;
|
||||
else if (strcmp(*typstr, "Threshold Truncated") == 0) {
|
||||
typ = cv::THRESH_TRUNC;
|
||||
}
|
||||
if (strcmp(*typstr, "Threshold to Zero") == 0) {
|
||||
typ = 3;
|
||||
else if (strcmp(*typstr, "Threshold to Zero") == 0) {
|
||||
typ = cv::THRESH_TOZERO;
|
||||
}
|
||||
if (strcmp(*typstr, "Threshold to Zero Inverted") == 0) {
|
||||
typ = 4;
|
||||
else if (strcmp(*typstr, "Threshold to Zero Inverted") == 0) {
|
||||
typ = cv::THRESH_TOZERO_INV;
|
||||
}
|
||||
else {
|
||||
char *typeString = *typstr;
|
||||
char text[] = "\" is no supported binarization technique. "
|
||||
"Use \"Binary\" (default), \"Binary Inverted\", "
|
||||
"\"Threshold Truncated\", \"Threshold to Zero\" "
|
||||
"or \"Threshold to Zero Inverted\"";
|
||||
char errorMessage[strlen(typeString) + strlen(text) + 2];
|
||||
strcpy(errorMessage, "\"");
|
||||
strcat(errorMessage, typeString);
|
||||
strcat(errorMessage, text);
|
||||
|
||||
Nan::ThrowError(errorMessage);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (info.Length() >= 4) {
|
||||
Nan::Utf8String algorithm(info[3]);
|
||||
|
||||
if (strcmp(*algorithm, "Simple") == 0) {
|
||||
// Uses default
|
||||
}
|
||||
else if (strcmp(*algorithm, "Otsu") == 0) {
|
||||
typ += 8;
|
||||
}
|
||||
else {
|
||||
char *algo = *algorithm;
|
||||
char text[] = "\" is no supported threshold algorithm. "
|
||||
"Use \"Simple\" (default) or \"Otsu\".";
|
||||
char errorMessage[strlen(algo) + strlen(text) + 2];
|
||||
strcpy(errorMessage, "\"");
|
||||
strcat(errorMessage, algo);
|
||||
strcat(errorMessage, text);
|
||||
|
||||
Nan::ThrowError(errorMessage);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user