本文参考作者浅墨_毛星云的著作《OpenCV3编程入门》中的源码和相关内容。
Opencv访问矩阵像素方法
在图像处理中,会经常对图像的像素数据进行处理。那么在使用opencv的过程中避免不了去使用矩阵Mat。对矩阵Mat中像素的访问常用的几种方法有:
通过获取矩阵数据的指针进行访问
通过迭代器访问
通过at函数访问
为此,对这三种方式的性能做了相关的测试。测试方法是对图像像素做映射压缩处理,然后进行计时比较。首先是主程序如下:
cv::Mat srcImage = cv::imread("1.jpg");
cv::imshow("src image", srcImage);
cv::Mat dstImage;
dstImage.create(srcImage.rows, srcImage.cols, srcImage.type());
double dStratTime = static_cast<double>(cv::getTickCount());
CompressedPixel1(srcImage, dstImage, 32);
double dTime = ((double)cv::getTickCount() - dStratTime) / cv::getTickFrequency();
std::cout << "operation hours: " << dTime << "s" << std::endl;
cv::imshow("dst image", dstImage