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 迴圈展開,...