Description
My next try was to add a @Manual declaration to the legacy cv.mGet function, which is an INLINE declaration in opencv-src/modules/core/include/opencv2/core/types_c.h as:
CV_INLINE double cvmGet( const CvMat* mat, int row, int col )
{
int type;
type = CV_MAT_TYPE(mat->type);
assert( (unsigned)row < (unsigned)mat->rows &&
(unsigned)col < (unsigned)mat->cols );
if( type == CV_32FC1 )
return ((float_)(mat->data.ptr + (size_t)mat->step_row))[col];
else
{
assert( type == CV_64FC1 );
return ((double_)(mat->data.ptr + (size_t)mat->step_row))[col];
}
}
my try on the bea declaration to expose the method in opencv_manual.cpp:
v8::Handlev8::Value JOpenCV::mGet(const v8::Arguments& args) {
METHOD_BEGIN(1);
//float mGet(const Mat* mat, int row, int col)
//TODO: Enter code here
cv::Mat* mat = bea::Convertcv::Mat*::FromJS(args[0], 0);
int row = bea::Convert::FromJS(args[1], 1);
int col = bea::Convert::FromJS(args[2], 2);
THROW_IF_NOT(row > 0, "Invalid row value");
THROW_IF_NOT(col > 0, "Invalid col value");
// float or double?
float* ptr = (float_)(mat->data + (size_t)mat->step_row);
// i get negative values too -> obviously wrong pointer/bad value for color...
float result = ptr[col];
return bea::Convert::ToJS(result);
METHOD_END();
}
(as You can see i'm still no good at all in CPP / v8)
What values use this v8 port for storing colors? Floats, doubles, uchars?