Mat vector array訪問效率測試

2021-06-17 22:31:55 字數 2690 閱讀 5012

影象處理過程中常常需要訪問影象資料,在要求實時性的專案中,乙個高效的影象的訪問方式就顯得尤為重要,下面測試了vector,array及mat儲存資料情況下的不同訪問方式的效率,**如下:

// 需要新增以下兩個標頭檔案

#include #pragma comment(lib,"winmm.lib")

vectortest;

float test_array[10000];

mat img(5000,5000,cv_32fc1);

test.resize(10000);

float test_sum = 0;

cstring str;

large_integer privious, current;

large_integer frequence;

queryperformancefrequency( &frequence);

for (int i = 0;i<10000;++i)

queryperformancecounter( &privious );

vector::iterator iter;

for (iter=test.begin();iter!=test.end();iter++)

queryperformancecounter( ¤t );

str.format("vector iterator----------------------%f--------------------------\n",1000*(current.quadpart-privious.quadpart)/(double)frequence.quadpart);

outputdebugstring(str);

queryperformancecounter( &privious );

for (int i = 0;i(h,w) = 1.99;

} }queryperformancecounter( ¤t );

str.format("mat at(h,w)----------------------%f--------------------------\n",1000*(current.quadpart-privious.quadpart)/(double)frequence.quadpart);

outputdebugstring(str);

queryperformancecounter( &privious );

float *p = null;

for (int h = 0;h(h);

for (int w = 0;w(h)----------------------%f--------------------------\n",1000*(current.quadpart-privious.quadpart)/(double)frequence.quadpart);

outputdebugstring(str);

queryperformancecounter( &privious );

float *magdatap = null;

int occindex = 0;

int      step = img.step/sizeof(float);

magdatap= (float*)img.data;

for (int h = 0;h測試結果:

-debug模式

vector  iterator----------------------30.301132--------------------------

vector at----------------------27.345137--------------------------

array----------------------0.027407--------------------------

mat at(h,w)----------------------1790.321925--------------------------

mat img.ptr(h)----------------------41.638419--------------------------

mat img.data;----------------------54.197859--------------------------

-release模式

vector  iterator----------------------0.237624--------------------------

vector at----------------------0.150586--------------------------

array----------------------0.000301--------------------------

mat at(h,w)----------------------68.487226--------------------------

mat img.ptr(h)----------------------19.388496--------------------------

mat img.data;----------------------13.896339--------------------------

結論:1、陣列訪問的效率高於vector。

2、release模式下,先獲取mat的資料指標再訪問(最後一種mat訪問方式)效率最高。

訪優酷評論

html page xlanguage c autoeventwireup true codefile default.aspx.cs inherits default 後台 using system using system.collections.generic using system.lin...

畫素巡訪 at ptr

當我們進行影像處理時,可能有操作是要查訪所有畫素,比如說我們想要改變一張影像的灰階值,讓所有的畫素值加20,這時我們就需掃過影像所有的畫素,這邊介紹opencv的at 和ptr 函式以及迭代器,來查訪mat所有畫素。at 可用來讀取和修改某個畫素值,通常用來對隨機位置的畫素進行讀寫,就效率考量,並不...

windows nginx配置https訪問

本文主要記錄在windows下安裝nginx 環境 win10 64位。進入window的cmd視窗,輸入如下圖所示的命令,進入到nginx目錄 d nginx 1.8.1 使用 start nginx.exe 進行nginx的安裝,如下圖所示 安裝成功後,在 任務管理器 中會看到 nginx.ex...