Optimize matrix row copying in OpenCV

I have a [32678 x 10] matrix (w2c) and I want to copy 24700 rows of it to another matrix(out). I have the index of the rows to be copied in a vector(index). For doing this in matlab I do:

out = w2c(index_im,:);

It takes approximately 0.002622 seconds.

In OpenCV:

Mat out(index.cols, w2c.cols, w2c.type());
for (int i = 0; i < index.cols; ++i) {
    w2c.row(index.at<int>(i) - 1).copyTo(out.row(i));

It takes approximately 0.015121 seconds.

As you can see Matlab is 6 times faster. How can I make the OpenCV code efficient?

Source: c++

Leave a Reply