mirror of
https://github.com/peterbraden/node-opencv.git
synced 2025-12-08 19:45:55 +00:00
Merge pull request #499 from schmidmt/master
Added support for single channel pixelRow and pixelColumn
This commit is contained in:
commit
e40d1669c2
@ -565,8 +565,10 @@ NAN_METHOD(Matrix::PixelRow) {
|
|||||||
|
|
||||||
int width = self->mat.size().width;
|
int width = self->mat.size().width;
|
||||||
int y = info[0]->IntegerValue();
|
int y = info[0]->IntegerValue();
|
||||||
v8::Local < v8::Array > arr = Nan::New<Array>(width * 3);
|
v8::Local < v8::Array > arr;
|
||||||
|
|
||||||
|
if (self->mat.channels() == 3) {
|
||||||
|
arr = Nan::New<Array>(width * 3);
|
||||||
for (int x = 0; x < width; x++) {
|
for (int x = 0; x < width; x++) {
|
||||||
cv::Vec3b pixel = self->mat.at<cv::Vec3b>(y, x);
|
cv::Vec3b pixel = self->mat.at<cv::Vec3b>(y, x);
|
||||||
int offset = x * 3;
|
int offset = x * 3;
|
||||||
@ -574,6 +576,13 @@ NAN_METHOD(Matrix::PixelRow) {
|
|||||||
arr->Set(offset + 1, Nan::New<Number>((double) pixel.val[1]));
|
arr->Set(offset + 1, Nan::New<Number>((double) pixel.val[1]));
|
||||||
arr->Set(offset + 2, Nan::New<Number>((double) pixel.val[2]));
|
arr->Set(offset + 2, Nan::New<Number>((double) pixel.val[2]));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
arr = Nan::New<Array>(width);
|
||||||
|
for (int x = 0; x < width; x++) {
|
||||||
|
int pixel = (int)self->mat.at<unsigned char>(y, x);
|
||||||
|
arr->Set(x, Nan::New<Number>(pixel));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
info.GetReturnValue().Set(arr);
|
info.GetReturnValue().Set(arr);
|
||||||
}
|
}
|
||||||
@ -597,8 +606,10 @@ NAN_METHOD(Matrix::PixelCol) {
|
|||||||
|
|
||||||
int height = self->mat.size().height;
|
int height = self->mat.size().height;
|
||||||
int x = info[0]->IntegerValue();
|
int x = info[0]->IntegerValue();
|
||||||
v8::Local < v8::Array > arr = Nan::New<Array>(height * 3);
|
v8::Local < v8::Array > arr;
|
||||||
|
|
||||||
|
if (self->mat.channels() == 3) {
|
||||||
|
arr = Nan::New<Array>(height * 3);
|
||||||
for (int y = 0; y < height; y++) {
|
for (int y = 0; y < height; y++) {
|
||||||
cv::Vec3b pixel = self->mat.at<cv::Vec3b>(y, x);
|
cv::Vec3b pixel = self->mat.at<cv::Vec3b>(y, x);
|
||||||
int offset = y * 3;
|
int offset = y * 3;
|
||||||
@ -606,6 +617,13 @@ NAN_METHOD(Matrix::PixelCol) {
|
|||||||
arr->Set(offset + 1, Nan::New<Number>((double) pixel.val[1]));
|
arr->Set(offset + 1, Nan::New<Number>((double) pixel.val[1]));
|
||||||
arr->Set(offset + 2, Nan::New<Number>((double) pixel.val[2]));
|
arr->Set(offset + 2, Nan::New<Number>((double) pixel.val[2]));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
arr = Nan::New<Array>(height);
|
||||||
|
for (int y = 0; y < height; y++) {
|
||||||
|
int pixel = (int)self->mat.at<unsigned char>(y, x);
|
||||||
|
arr->Set(y, Nan::New<Number>(pixel));
|
||||||
|
}
|
||||||
|
}
|
||||||
info.GetReturnValue().Set(arr);
|
info.GetReturnValue().Set(arr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user