mirror of
https://github.com/peterbraden/node-opencv.git
synced 2025-12-08 19:45:55 +00:00
Added Matrix constructor with integer type field.
This commit is contained in:
parent
dcf6ae4571
commit
21afdcd787
@ -104,8 +104,8 @@ Matrix::Init(Handle<Object> target) {
|
||||
NODE_SET_PROTOTYPE_METHOD(constructor, "pushBack", PushBack);
|
||||
|
||||
NODE_SET_PROTOTYPE_METHOD(constructor, "putText", PutText);
|
||||
|
||||
NODE_SET_PROTOTYPE_METHOD(constructor, "getPerspectiveTransform", GetPerspectiveTransform);
|
||||
|
||||
NODE_SET_PROTOTYPE_METHOD(constructor, "getPerspectiveTransform", GetPerspectiveTransform);
|
||||
NODE_SET_PROTOTYPE_METHOD(constructor, "warpPerspective", WarpPerspective);
|
||||
|
||||
NODE_SET_METHOD(constructor, "Eye", Eye);
|
||||
@ -132,7 +132,9 @@ Matrix::New(const Arguments &args) {
|
||||
if (args.Length() == 0){
|
||||
mat = new Matrix;
|
||||
} else if (args.Length() == 2 && args[0]->IsInt32() && args[1]->IsInt32()){
|
||||
mat = new Matrix(args[0]->IntegerValue(), args[1]->IntegerValue());
|
||||
mat = new Matrix(args[0]->IntegerValue(), args[1]->IntegerValue());
|
||||
} else if (args.Length() == 3 && args[0]->IsInt32() && args[1]->IsInt32() && args[2]->IsInt32()) {
|
||||
mat = new Matrix(args[0]->IntegerValue(), args[1]->IntegerValue(), args[2]->IntegerValue());
|
||||
} else if (args.Length() == 5) {
|
||||
Matrix *other = ObjectWrap::Unwrap<Matrix>(args[0]->ToObject());
|
||||
int x = args[1]->IntegerValue();
|
||||
@ -156,6 +158,10 @@ Matrix::Matrix(int rows, int cols): ObjectWrap() {
|
||||
mat = cv::Mat(rows, cols, CV_32FC3);
|
||||
}
|
||||
|
||||
Matrix::Matrix(int rows, int cols, int type): ObjectWrap() {
|
||||
mat = cv::Mat(rows, cols, type);
|
||||
}
|
||||
|
||||
Matrix::Matrix(cv::Mat m, cv::Rect roi): ObjectWrap() {
|
||||
mat = cv::Mat(m, roi);
|
||||
}
|
||||
@ -444,7 +450,7 @@ Matrix::ToBuffer(const v8::Arguments& args){
|
||||
if ((args.Length() > 0) && (args[0]->IsFunction())) {
|
||||
return Matrix::ToBufferAsync(args);
|
||||
}
|
||||
|
||||
|
||||
// SergeMv changes
|
||||
// img.toBuffer({ext: ".png", pngCompression: 9}); // default png compression is 3
|
||||
// img.toBuffer({ext: ".jpg", jpegQuality: 80});
|
||||
@ -474,7 +480,7 @@ Matrix::ToBuffer(const v8::Arguments& args){
|
||||
int compression = options->Get(v8::String::New("pngCompression"))->IntegerValue();
|
||||
params.push_back(CV_IMWRITE_PNG_COMPRESSION);
|
||||
params.push_back(compression);
|
||||
}
|
||||
}
|
||||
}
|
||||
//---------------------------
|
||||
|
||||
@ -539,7 +545,7 @@ Matrix::ToBufferAsync(const v8::Arguments& args){
|
||||
int compression = options->Get(v8::String::New("pngCompression"))->IntegerValue();
|
||||
baton->params.push_back(CV_IMWRITE_PNG_COMPRESSION);
|
||||
baton->params.push_back(compression);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
baton->ext = ext;
|
||||
@ -658,11 +664,11 @@ Matrix::Ellipse(const v8::Arguments& args){
|
||||
y = args[1]->Uint32Value();
|
||||
width = args[2]->Uint32Value();
|
||||
height = args[3]->Uint32Value();
|
||||
|
||||
|
||||
if(args[4]->IsArray()) {
|
||||
Local<Object> objColor = args[4]->ToObject();
|
||||
color = setColor(objColor);
|
||||
}
|
||||
}
|
||||
|
||||
if(args[5]->IntegerValue())
|
||||
thickness = args[5]->IntegerValue();
|
||||
@ -747,7 +753,7 @@ Matrix::Save(const v8::Arguments& args) {
|
||||
if (args.Length() > 1) {
|
||||
return SaveAsync(args);
|
||||
}
|
||||
|
||||
|
||||
if (!args[0]->IsString())
|
||||
return v8::ThrowException(v8::Exception::TypeError(String::New("filename required")));
|
||||
|
||||
@ -955,7 +961,7 @@ Matrix::BilateralFilter(const v8::Arguments &args) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
cv::bilateralFilter(self->mat, filtered, d, sigmaColor, sigmaSpace, borderType);
|
||||
filtered.copyTo(self->mat);
|
||||
|
||||
@ -1351,7 +1357,7 @@ Matrix::Resize(const v8::Arguments& args){
|
||||
CV_INTER_LANCZOS4 =4
|
||||
*/
|
||||
int interpolation = (args.Length() < 3) ? (int)cv::INTER_LINEAR : args[2]->Uint32Value();
|
||||
|
||||
|
||||
Matrix *self = ObjectWrap::Unwrap<Matrix>(args.This());
|
||||
cv::Mat res = cv::Mat(x, y, CV_32FC3);
|
||||
cv::resize(self->mat, res, cv::Size(x, y), 0, 0, interpolation);
|
||||
@ -1392,18 +1398,18 @@ Matrix::Rotate(const v8::Arguments& args){
|
||||
// Now flip the image
|
||||
int mode = -1; // flip around both axes
|
||||
// If counterclockwise, flip around the x-axis
|
||||
if (angle2 == 90) { mode = 0; }
|
||||
if (angle2 == 90) { mode = 0; }
|
||||
// If clockwise, flip around the y-axis
|
||||
if (angle2 == 270) { mode = 1; }
|
||||
if (angle2 == 270) { mode = 1; }
|
||||
cv::flip(self->mat, self->mat, mode);
|
||||
|
||||
|
||||
return scope.Close(Undefined());
|
||||
}
|
||||
//-------------
|
||||
|
||||
int x = args[1]->IsUndefined() ? round(self->mat.size().width / 2) : args[1]->Uint32Value();
|
||||
int y = args[1]->IsUndefined() ? round(self->mat.size().height / 2) : args[2]->Uint32Value();
|
||||
|
||||
|
||||
cv::Point center = cv::Point(x,y);
|
||||
rotMatrix = getRotationMatrix2D(center, angle, 1.0);
|
||||
|
||||
@ -1474,7 +1480,7 @@ Matrix::AdjustROI(const v8::Arguments& args) {
|
||||
Handle<Value>
|
||||
Matrix::LocateROI(const v8::Arguments& args) {
|
||||
SETUP_FUNCTION(Matrix)
|
||||
|
||||
|
||||
cv::Size wholeSize;
|
||||
cv::Point ofs;
|
||||
|
||||
@ -1583,7 +1589,7 @@ Matrix::CopyTo(const v8::Arguments& args) {
|
||||
Matrix * self = ObjectWrap::Unwrap<Matrix>(args.This());
|
||||
int width = self->mat.size().width;
|
||||
int height = self->mat.size().height;
|
||||
|
||||
|
||||
// param 0 - destination image:
|
||||
Matrix *dest = ObjectWrap::Unwrap<Matrix>(args[0]->ToObject());
|
||||
// param 1 - x coord of the destination
|
||||
@ -1615,7 +1621,7 @@ Matrix::CvtColor(const v8::Arguments& args) {
|
||||
//
|
||||
if (!strcmp(sTransform, "CV_BGR2GRAY")) { iTransform = CV_BGR2GRAY; }
|
||||
else if (!strcmp(sTransform, "CV_GRAY2BGR")) { iTransform = CV_GRAY2BGR; }
|
||||
//
|
||||
//
|
||||
else if (!strcmp(sTransform, "CV_BGR2XYZ")) { iTransform = CV_BGR2XYZ; }
|
||||
else if (!strcmp(sTransform, "CV_XYZ2BGR")) { iTransform = CV_XYZ2BGR; }
|
||||
//
|
||||
@ -1638,7 +1644,7 @@ Matrix::CvtColor(const v8::Arguments& args) {
|
||||
else if (!strcmp(sTransform, "CV_BayerGB2BGR")) { iTransform = CV_BayerGB2BGR; }
|
||||
else if (!strcmp(sTransform, "CV_BayerRG2BGR")) { iTransform = CV_BayerRG2BGR; }
|
||||
else if (!strcmp(sTransform, "CV_BayerGR2BGR")) { iTransform = CV_BayerGR2BGR; }
|
||||
else {
|
||||
else {
|
||||
iTransform = 0; // to avoid compiler warning
|
||||
return v8::ThrowException(Exception::TypeError(String::New(
|
||||
"Conversion code is unsupported")));
|
||||
@ -1705,7 +1711,7 @@ Matrix::Merge(const v8::Arguments& args) {
|
||||
Handle<Value>
|
||||
Matrix::EqualizeHist(const v8::Arguments& args) {
|
||||
HandleScope scope;
|
||||
|
||||
|
||||
Matrix * self = ObjectWrap::Unwrap<Matrix>(args.This());
|
||||
|
||||
cv::equalizeHist(self->mat, self->mat);
|
||||
@ -1760,7 +1766,7 @@ Matrix::MatchTemplate(const v8::Arguments& args) {
|
||||
TM_CCOEFF =4
|
||||
TM_CCOEFF_NORMED =5
|
||||
*/
|
||||
|
||||
|
||||
HandleScope scope;
|
||||
|
||||
Matrix *self = ObjectWrap::Unwrap<Matrix>(args.This());
|
||||
@ -1837,7 +1843,7 @@ Matrix::PutText(const v8::Arguments& args) {
|
||||
HandleScope scope;
|
||||
|
||||
Matrix *self = ObjectWrap::Unwrap<Matrix>(args.This());
|
||||
|
||||
|
||||
v8::String::AsciiValue textString(args[0]);
|
||||
char *text = (char *) malloc(textString.length() + 1);
|
||||
strcpy(text, *textString);
|
||||
@ -1928,7 +1934,7 @@ Matrix::WarpPerspective(const v8::Arguments& args) {
|
||||
Handle<Value>
|
||||
Matrix::CopyWithMask(const v8::Arguments& args) {
|
||||
SETUP_FUNCTION(Matrix)
|
||||
|
||||
|
||||
// param 0 - destination image:
|
||||
Matrix *dest = ObjectWrap::Unwrap<Matrix>(args[0]->ToObject());
|
||||
// param 1 - mask. same size as src and dest
|
||||
@ -1943,7 +1949,7 @@ Matrix::CopyWithMask(const v8::Arguments& args) {
|
||||
Handle<Value>
|
||||
Matrix::SetWithMask(const v8::Arguments& args) {
|
||||
SETUP_FUNCTION(Matrix)
|
||||
|
||||
|
||||
// param 0 - target value:
|
||||
Local<Object> valArray = args[0]->ToObject();
|
||||
cv::Scalar newvals;
|
||||
@ -1962,7 +1968,7 @@ Matrix::SetWithMask(const v8::Arguments& args) {
|
||||
Handle<Value>
|
||||
Matrix::MeanWithMask(const v8::Arguments& args) {
|
||||
SETUP_FUNCTION(Matrix)
|
||||
|
||||
|
||||
// param 0 - mask. same size as src and dest
|
||||
Matrix *mask = ObjectWrap::Unwrap<Matrix>(args[0]->ToObject());
|
||||
|
||||
@ -2007,4 +2013,4 @@ Matrix::Shift(const v8::Arguments& args){
|
||||
self->mat = res;
|
||||
|
||||
return scope.Close(Undefined());
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,7 +10,7 @@ class Matrix: public node::ObjectWrap {
|
||||
Matrix();
|
||||
Matrix(cv::Mat other, cv::Rect roi);
|
||||
Matrix(int rows, int cols);
|
||||
Matrix(int rows, int cols, int typ);
|
||||
Matrix(int rows, int cols, int type);
|
||||
|
||||
static double DblGet(cv::Mat mat, int i, int j);
|
||||
|
||||
@ -98,7 +98,7 @@ class Matrix: public node::ObjectWrap {
|
||||
JSFUNC(PushBack)
|
||||
|
||||
JSFUNC(PutText)
|
||||
JSFUNC(GetPerspectiveTransform)
|
||||
JSFUNC(GetPerspectiveTransform)
|
||||
JSFUNC(WarpPerspective)
|
||||
|
||||
JSFUNC(CopyWithMask)
|
||||
@ -138,4 +138,3 @@ class Matrix: public node::ObjectWrap {
|
||||
*/
|
||||
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user