Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Does accumulate() in OpenCV 3.0.0 support the 3d Mat?

Hi, guys.

I migrate opencv 3.0.0 recently. After the migration, the accumulate() in the following line throw an exception.

cv::Mat mat1(3, sizes, CV_32F, cv::Scalar(1); cv::Mat mat2(3, sizes, CV_32F, cv::Scalar(0)); for (int y = 0; y < n; y ++) accumulate(mat1, mat2);

I changed the mat1's dimensions from 3 to 2 then there was no exception. Before the migration, the OpenCV's version is 2.4.9 and this codes works well.

I read the documentation of accumulate() in opencv 3.0.0. And it gives one function:

dst(x,y) = dst(x,y) + src(x,y) if mask != 0

Does this mean accumulate() in OpenCV 3.0.0 does not support 3d mat any more? What is the best practices if I want to accumulate the 3d Mat?

Thks

Does accumulate() in OpenCV 3.0.0 support the 3d Mat?

Hi, guys.

I migrate opencv 3.0.0 recently. After the migration, the accumulate() in the following line throw an exception.

cv::Mat mat1(3, sizes, CV_32F, cv::Scalar(1); cv::Mat mat2(3, sizes, CV_32F, cv::Scalar(0)); for (int y = 0; y < n; y ++) accumulate(mat1, mat2);

I changed the mat1's dimensions from 3 to 2 then there was no exception. Before the migration, the OpenCV's version is 2.4.9 and this codes works well.

I read the documentation of accumulate() in opencv 3.0.0. And it gives one this function:

dst(x,y) = dst(x,y) + src(x,y) if mask != 0

Does this mean accumulate() in OpenCV 3.0.0 does not support 3d mat any more? What is the best practices if I want to accumulate the 3d Mat?

ThksThanks :)

Does accumulate() in OpenCV 3.0.0 support the 3d Mat?

Hi, guys.

I migrate opencv 3.0.0 recently. After the migration, the accumulate() in the following line throw an exception.

int sizes[] = {1, 512, 1024};

cv::Mat mat1(3, sizes, CV_32F, cv::Scalar(1); cv::Scalar(1);

cv::Mat mat2(3, sizes, mat2(mat.dims, mat1.row(0).sizes(), CV_32F, cv::Scalar(0)); cv::Scalar(0));

for (int y = 0; y < n; 3; y ++) accumulate(mat1, ++) accumulate(mat1.row(y), mat2);

I changed the mat1's dimensions from 3 to 2 by squeeze() then there was no exception. Before the migration, the OpenCV's version is 2.4.9 and this codes works well.

I read the documentation of accumulate() in opencv 3.0.0. And it gives this function:

dst(x,y) = dst(x,y) + src(x,y) if mask != 0

Does this mean accumulate() in OpenCV 3.0.0 does not support 3d mat any more? What is the best practices if I want to accumulate the 3d Mat?

Thanks :)

Update: The matrix's dimension is 1512512. I used mat.squeeze() to get a 2d matrix. But I feel it's not efficient because the mat.squeeze() is called in the loop. I wonder if there is another way to solve this problem.

Does accumulate() in OpenCV 3.0.0 support the 3d Mat?

Hi, guys.

I migrate opencv 3.0.0 recently. After the migration, the accumulate() in the following line throw an exception.

int sizes[] = {1, 512, 1024};

cv::Mat mat1(3, sizes, CV_32F, cv::Scalar(1);

cv::Mat mat2(mat.dims, mat1.row(0).sizes(), CV_32F, cv::Scalar(0));

for (int y = 0; y < 3; y ++) accumulate(mat1.row(y), mat2);

I changed the mat1's dimensions from 3 to 2 by squeeze() then there was no exception. Before the migration, the OpenCV's version is 2.4.9 and this codes works well.

I read the documentation of accumulate() in opencv 3.0.0. And it gives this function:

dst(x,y) = dst(x,y) + src(x,y) if mask != 0

Does this mean accumulate() in OpenCV 3.0.0 does not support 3d mat any more? What is the best practices if I want to accumulate the 3d Mat?

Thanks :)

Update: The matrix's dimension is 1512512. 1x512x512. I used mat.squeeze() to get a 2d matrix. But I feel it's not efficient because the mat.squeeze() is called in the loop. I wonder if there is another way to solve this problem.

Does accumulate() in OpenCV 3.0.0 support the 3d Mat?

Hi, guys.

I migrate opencv 3.0.0 recently. After the migration, the accumulate() in the following line throw an exception.

int sizes[] = {1, 512, 1024};

cv::Mat mat1(3, sizes, CV_32F, cv::Scalar(1);

cv::Mat mat2(mat.dims, mat1.row(0).sizes(), CV_32F, cv::Scalar(0));

for (int y = 0; y < 3; y ++) accumulate(mat1.row(y), mat2);

I changed the mat1's dimensions from 3 to 2 by squeeze() then there was no exception. Before the migration, the OpenCV's version is 2.4.9 and this codes works well.

I read the documentation of accumulate() in opencv 3.0.0. And it gives this function:

dst(x,y) = dst(x,y) + src(x,y) if mask != 0

Does this mean accumulate() in OpenCV 3.0.0 does not support 3d mat any more? What is the best practices if I want to accumulate the 3d Mat?

Thanks :)

Update: The matrix's dimension is 1x512x512. Then I used mat.squeeze() to get a 2d matrix. matrix to solve this problem. But I feel it's not efficient because the mat.squeeze() is called in the loop. I wonder if there is another way to solve this problem.