Merge pull request #314 from jainanshul/color_conversion

Some fixes for color conversion
This commit is contained in:
Peter Braden 2015-10-09 10:20:08 +02:00
commit 90971d3ac8

View File

@ -998,10 +998,7 @@ NAN_METHOD(Matrix::ConvertGrayscale) {
Nan::ThrowError("Image is no 3-channel");
}
cv::Mat gray;
cv::cvtColor(self->mat, gray, CV_BGR2GRAY);
gray.copyTo(self->mat);
cv::cvtColor(self->mat, self->mat, CV_BGR2GRAY);
info.GetReturnValue().Set(Nan::Null());
}
@ -1739,38 +1736,55 @@ NAN_METHOD(Matrix::CvtColor) {
Nan::HandleScope scope;
Matrix * self = Nan::ObjectWrap::Unwrap<Matrix>(info.This());
if (info.Length() < 1) {
Nan::ThrowTypeError("Invalid number of arguments");
}
// Get transform string
v8::String::Utf8Value str (info[0]->ToString());
std::string str2 = std::string(*str);
const char * sTransform = (const char *) str2.c_str();
int iTransform;
//
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;}
//
else if (!strcmp(sTransform, "CV_BGR2YCrCb")) {iTransform = CV_BGR2YCrCb;}
else if (!strcmp(sTransform, "CV_YCrCb2BGR")) {iTransform = CV_YCrCb2BGR;}
//
else if (!strcmp(sTransform, "CV_BGR2HSV")) {iTransform = CV_BGR2HSV;}
else if (!strcmp(sTransform, "CV_HSV2BGR")) {iTransform = CV_HSV2BGR;}
//
else if (!strcmp(sTransform, "CV_BGR2HLS")) {iTransform = CV_BGR2HLS;}
else if (!strcmp(sTransform, "CV_HLS2BGR")) {iTransform = CV_HLS2BGR;}
//
else if (!strcmp(sTransform, "CV_BGR2Lab")) {iTransform = CV_BGR2Lab;}
else if (!strcmp(sTransform, "CV_Lab2BGR")) {iTransform = CV_Lab2BGR;}
//
else if (!strcmp(sTransform, "CV_BGR2Luv")) {iTransform = CV_BGR2Luv;}
else if (!strcmp(sTransform, "CV_Luv2BGR")) {iTransform = CV_Luv2BGR;}
//
else if (!strcmp(sTransform, "CV_BayerBG2BGR")) {iTransform = CV_BayerBG2BGR;}
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 {
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;
} else if (!strcmp(sTransform, "CV_BGR2YCrCb")) {
iTransform = CV_BGR2YCrCb;
} else if (!strcmp(sTransform, "CV_YCrCb2BGR")) {
iTransform = CV_YCrCb2BGR;
} else if (!strcmp(sTransform, "CV_BGR2HSV")) {
iTransform = CV_BGR2HSV;
} else if (!strcmp(sTransform, "CV_HSV2BGR")) {
iTransform = CV_HSV2BGR;
} else if (!strcmp(sTransform, "CV_BGR2HLS")) {
iTransform = CV_BGR2HLS;
} else if (!strcmp(sTransform, "CV_HLS2BGR")) {
iTransform = CV_HLS2BGR;
} else if (!strcmp(sTransform, "CV_BGR2Lab")) {
iTransform = CV_BGR2Lab;
} else if (!strcmp(sTransform, "CV_Lab2BGR")) {
iTransform = CV_Lab2BGR;
} else if (!strcmp(sTransform, "CV_BGR2Luv")) {
iTransform = CV_BGR2Luv;
} else if (!strcmp(sTransform, "CV_Luv2BGR")) {
iTransform = CV_Luv2BGR;
} else if (!strcmp(sTransform, "CV_BayerBG2BGR")) {
iTransform = CV_BayerBG2BGR;
} 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 if (!strcmp(sTransform, "CV_BGR2RGB")) {
iTransform = CV_BGR2RGB;
} else {
iTransform = 0; // to avoid compiler warning
Nan::ThrowTypeError("Conversion code is unsupported");
}