OpenCV,多种Mat图像元素访问方式的速度对比

本文部分文字为转载,仅供个人学习记录,如果无意中侵犯了您的版权请联系本人:[email protected],.本人会及时编辑掉

原作者:http://blog.csdn.net/ljbkiss/article/details/7381208

图像对象:lena.png; 512*512;后面为循环次数;运行时间为us;
测试环境:intel core i3, 2G RAM 破台式, Win7-x64, VS2012, OpenCV2.4.9

测试代码如下:

// ConsoleAppOpenCvMatTest.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include 
#include 
#include 
#include 
#include 
using namespace cv;
using namespace std;

/*
为了输出看是否每种方法取得是相同的像素,不要对大图像进行此操作,会很慢的哦!
下面的例子,在输出时使用的是30*40的图像。
测试时间时要注释掉,否则I/O操作将极大影响处理时间。
*/
//#define PIXEL_OUT//测试的时候可以去掉这个注释,但是很耗时


int main(int argc,char *argv[])
{
	ofstream fout("pixels.txt");

#ifdef PIXEL_OUT
	Mat img=imread("cat.jpg");
#else
	Mat img=imread("lena.png");
#endif

	if(!img.data)
	{
		cout<<"load image failed!"< spl;		
		split(temp, spl);
		for (i=0; i(i);
			for (j=0; j(i);
			for (j=0; j(i);
			for (j=0; j iters = temp.begin(),end=temp.end();
		for(; iters!=end; ++iters)
		{
			Vec3f vec3f = *iters;
			vec3f.val[1] /= 20.6f;
#ifdef PIXEL_OUT
			fout<(i,j)[1];
				mm /=20.6f;
#ifdef PIXEL_OUT
				fout<


测试结果:

OpenCV,多种Mat图像元素访问方式的速度对比_第1张图片

OpenCV,多种Mat图像元素访问方式的速度对比_第2张图片


本例子说明了:

1,由于split和merge操作比较耗时,方式1是最慢的方法,但是使用很方便

2,方式2,3,最快,4,5速度较快,6,7最慢

你可能感兴趣的:(OpenCV)