I would like to get the even rows/cols of a mat of 3 channels, something like this:
A = 1 0 1 0 1 0
1 0 1 0 1 0
1 0 1 0 1 0
result = 1 1 1
1 1 1
1 1 1
How to can I do this using openCV?
Thanks in advance.
1 | initial version |
I would like to get the even rows/cols of a mat of 3 channels, something like this:
A = 1 0 1 0 1 0
1 0 1 0 1 0
1 0 1 0 1 0
result = 1 1 1
1 1 1
1 1 1
How to can I do this using openCV?
Thanks in advance.
2 | No.2 Revision |
I would like to get the even rows/cols of a mat of 3 channels, something like this:
A = 1 0 1 0 1 0
1 0 1 0 1 0
1 0 1 0 1 0
result = 1 1 1
1 1 1
1 1 1
How to can I do this using openCV?
Thanks in advance.
3 | No.3 Revision |
I would like to get the even rows/cols of a mat of 3 channels, something like this:
A = 1 0 1 0 1 0
1 0 1 0 1 0
1 0 1 0 1 0
result = 1 1 1
1 1 1
How to can I do this using openCV?
Thanks in advance.
EDITED:
Here is the code I could integrate:
Mat img_object =
imread(patternImageName);
Mat B;
for (int i = 0; i < img_object.cols; i += 2)
{
B.push_back(img_object.col(i));
}
// now we got 1 large 1d flat (column) array with all the collected elements,
// let's make a 3x3 Mat of it again:
B = B.reshape(-1,3);// 1 elem per channel, 3 rows.
B = B.t(); // transpose it
Mat B2;
for (int i = 0; i < B.rows; i += 2)
{
B2.push_back(B.row(i));
}
imwrite("as.png",B2);
But it throws the following expection:
OpenCV Error: Assertion failed (src.dims <= 2 && esz <= (size_t)32) in transpose, file /build/buildd/opencv-2.4.8+dfsg1/modules/core/src/matrix.cpp, line 2007
terminate called after throwing an instance of 'cv::Exception'
what(): /build/buildd/opencv-2.4.8+dfsg1/modules/core/src/matrix.cpp:2007: error: (-215) src.dims <= 2 && esz <= (size_t)32 in function transpose
Am I missing something?
4 | No.4 Revision |
I would like to get the even rows/cols of a mat of 3 channels, something like this:
A = 1 0 1 0 1 0
1 0 1 0 1 0
1 0 1 0 1 0
result = 1 1 1
1 1 1
How to can I do this using openCV?
Thanks in advance.
EDITED:
Here is the code I could integrate:
Mat img_object =
= imread(patternImageName);
Mat B;
for (int i = 0; i < img_object.cols; i += 2)
{
B.push_back(img_object.col(i));
}
// now we got 1 large 1d flat (column) array with all the collected elements,
// let's make a 3x3 Mat of it again:
B = B.reshape(-1,3);// 1 elem per channel, 3 rows.
B = B.t(); // transpose it
Mat B2;
for (int i = 0; i < B.rows; i += 2)
{
B2.push_back(B.row(i));
}
imwrite("as.png",B2);
But it throws the following expection:
OpenCV Error: Assertion failed (src.dims <= 2 && esz <= (size_t)32) in transpose, file /build/buildd/opencv-2.4.8+dfsg1/modules/core/src/matrix.cpp, line 2007
terminate called after throwing an instance of 'cv::Exception'
what(): /build/buildd/opencv-2.4.8+dfsg1/modules/core/src/matrix.cpp:2007: error: (-215) src.dims <= 2 && esz <= (size_t)32 in function transpose
Am I missing something?