論程式效能 opencv 和VTK 比較

2021-10-01 17:54:13 字數 1321 閱讀 1093

int waitpng1(uchar* pimage,qstring path)

{ //使用 opencv 比使用vtk快8ms 雖然4-5ms看起來差距不大,但是隨著**量的增多,累加起來的時間會有很多

clock_t t1 =0,t2=0;

t1 = clock();

cv::mat mask(512, 512, cv_8uc1, pimage);

cv::imwrite(qprintable(path),mask);

t2 = clock() - t1;

qdebug()<<"****************"image->setdimensions(512, 512, 1);

image->allocatescalars(vtk_unsigned_char, 1);

uchar* imagedata = static_cast(image->getscalarpointer());

memcpy(imagedata, pimage, 512 * 512 * sizeof(uchar));

//下面四行**是影象反轉 加上下面的**後,增加4-5ms的時間

// vtknewflip;

// flip->setinputdata(image);

// flip->setfilteredaxes(1);

// flip->update();

vtknewpngwriter;

pngwriter->setfilename(qprintable(path));

// pngwriter->setinputdata(flip->getoutput());

pngwriter->setinputdata(image);

pngwriter->update();

pngwriter->write();

t2 = clock() - t1;

qdebug()<<"***************"<1.首先 vtk是必須要用的,opencv可以用也可以不用,如果不考慮程式大小 (opencv 增加了70mdll),直接使用opencv

2.使用opencv簡化**,我們沒有必要單獨再寫一些方法來完成這些功能

3.另外,opencv可以儲存float(0-1) 和uchar(0-255)型別,**封裝的很好,vtk僅支援uchar型別**

4.使用opencv2行**搞定,自己寫 需要n行(還不能保證沒有錯誤),vtk也要十幾行,**量越多,越容易出錯,opencv的錯誤,去開源社群提交會有人搞定,也可以把原始碼摘出來(沒必要)

綜上,決定在程式裡面新增opencv庫(除非規定不能使用)

opencv程式效能檢測

1 用opencv函式獲取函式執行時間 def get cv time self e1 cv2.gettickcount 從參考點到這個函式被執行的時鐘數 for i in range 5 49,2 用不同的核來進行中值模糊 img cv2.medianblur self.img,i e2 cv2....

優化程式效能

編寫高效程式需要兩個活動 第一,我們必須選擇一組最好的演算法和資料結構 第二,我們必須編寫出編譯器能夠有效優化以轉換成高效可執行 的源 這裡,我們主要講述後者。首先,我們討論一下為什麼要編寫高效程式。不難想象,如果本來要用 天執行完的程式,經過優化只需要 天就可執行完,這是一件多麼令人振奮的 事啊。...

優化程式效能

l 消除迴圈的低效率 n 對於迴圈中的過程呼叫盡量移出迴圈外,例如 nfor i 0 i strlen s i strlen 函式為線性增長 在字串長度很大時 很消耗系統資源 n 減少不必要的儲存器引用,將儲存器引用儲存在臨時變數中.l 處理器優化 即充分利用儲存器流水線操作的吞吐量 n 迴圈展開,...