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?