影象處理過程中常常需要訪問影象資料,在要求實時性的專案中,乙個高效的影象的訪問方式就顯得尤為重要,下面測試了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...