mirror of
https://github.com/peterbraden/node-opencv.git
synced 2025-12-08 19:45:55 +00:00
Fix Get / Set - closes #15
This commit is contained in:
parent
7468d0e5fe
commit
03e444071c
@ -129,9 +129,9 @@ Matrix::DblGet(cv::Mat mat, int i, int j){
|
||||
switch(mat.type()){
|
||||
case CV_32FC3:
|
||||
pix = mat.at<cv::Vec3b>(i, j);
|
||||
pint &= (uchar) pix.val[2];
|
||||
pint &= ((uchar) pix.val[1]) << 8;
|
||||
pint &= ((uchar) pix.val[0]) << 16;
|
||||
pint |= (uchar) pix.val[2];
|
||||
pint |= ((uchar) pix.val[1]) << 8;
|
||||
pint |= ((uchar) pix.val[0]) << 16;
|
||||
val = (double) pint;
|
||||
break;
|
||||
|
||||
@ -166,6 +166,7 @@ Matrix::Set(const Arguments& args){
|
||||
int i = args[0]->IntegerValue();
|
||||
int j = args[1]->IntegerValue();
|
||||
double val = args[2]->NumberValue();
|
||||
int vint = 0;
|
||||
|
||||
if(args.Length() == 4) {
|
||||
self->mat.at<cv::Vec3b>(i,j)[args[3]->NumberValue()] = val;
|
||||
@ -174,10 +175,16 @@ Matrix::Set(const Arguments& args){
|
||||
switch(self->mat.type()){
|
||||
|
||||
case CV_32FC3:
|
||||
self->mat.at<cv::Vec3b>(i,j)[0] = static_cast<unsigned int> (val + 0.5) >> 16;
|
||||
self->mat.at<cv::Vec3b>(i,j)[1] = static_cast<unsigned int> (val + 0.5) >> 8;
|
||||
self->mat.at<cv::Vec3b>(i,j)[2] = static_cast<unsigned int> (val + 0.5);
|
||||
vint = static_cast<unsigned int>(val + 0.5);
|
||||
self->mat.at<cv::Vec3b>(i,j)[0] = (uchar) (vint >> 16) & 0xff;
|
||||
self->mat.at<cv::Vec3b>(i,j)[1] = (uchar) (vint >> 8) & 0xff;
|
||||
self->mat.at<cv::Vec3b>(i,j)[2] = (uchar) (vint) & 0xff;
|
||||
//printf("!!!i %x, %x, %x", (vint >> 16) & 0xff, (vint >> 8) & 0xff, (vint) & 0xff);
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
self->mat.at<double>(i,j) = val;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -72,6 +72,14 @@ vows.describe('Smoke Tests OpenCV').addBatch({
|
||||
assert.ok(new cv.Matrix);
|
||||
assert.ok(new cv.Matrix(1,2));
|
||||
}
|
||||
|
||||
, "set/row" : function(cv){
|
||||
var mat = new cv.Matrix(1, 2);
|
||||
mat.set(0,0,3)
|
||||
mat.set(0,1,5000)
|
||||
assert.deepEqual(mat.row(0), [3,5000]);
|
||||
}
|
||||
|
||||
, "get/set" : function(cv){
|
||||
var mat = new cv.Matrix(1,2);
|
||||
assert.equal(mat.set(0,0,3), undefined);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user