OpenCV Mat array access, which way is the fastest for and why?

user951069 picture user951069 · Jan 11, 2013 · Viewed 18k times · Source

I am wondering about the way of accessing data in Mat in OpenCV. As you know, we can access to get data in many ways. I want to store image (Width x Height x 1-depth) in Mat and looping access each pixel in the image. Using ptr<>(irow) to get row-pixel and then access each column in the row is the best way? or using at<>(irow,jcol) is the best? or using directly calculate the index by using index = irow*Width + jrow is the best? Anyone know the reason.

Thanks in advance

Answer

nkint picture nkint · Jan 11, 2013

You can find information here in the documentation: the basic image container and how to scan images.

I advice you to practice with at (here) if you are not experienced with OpenCV or with C language types hell. But the fastest way is ptr as Nolwenn answer because you avoid the type checking.