opencv2.2版本中访问像素点的效率问题

摘自opencv2 codebook

1. at方式,如image.at<uchar>(i,j) =255或image.at<Vec3b>(i,j)[0] =255

此方式的效率比较低,建议只在随机读取时使用,在图片或矩阵轮询时不要使用。

2. 指针方式如 uchar* data= image.ptr<uchar>(j),data[i] =elem;

指针操作的效率最高,尤其是经过优化后的,一个优化的方法就是用短的循环代替长的循环,一个循环内多做些操作

3. 迭代器的方式如cv::Mat_<cv::Vec3b>::iterator it=  image.begin<cv::Vec3b>();

他的主要好处就是不会越界,是面向对象编程里经常用到的STL的方法,但他的效率也不是很高

所以平时编程还是用指针的方法。

原文地址:https://www.cnblogs.com/seacode/p/2119869.html