在visual studio+opencv中初始化圖像矩陣(從來沒見人這麼做過)?
04-04
兩種方法:如果用二維數組發現工程一直顯示在生成,這個矩陣(大小為3M)是不是佔用內存太多?如果直接初始化Mat直接停止運行報錯。
補充:謝謝大家的回答。解釋一下我之所以要把整個圖放進去,是因為每個像素對應一個係數,放進去之後進行濾波的時候就一查表的形式獲得濾波的係數,這樣大大減少演算法的時間。
把二進位寫在文件里不好嗎?讀進來照樣查找。你這個矩陣看起來有1.8M那麼大,VC++不會給你那麼大的堆棧,所以直接就爆棧了。當然這個棧尺寸是可以改的,不過你不要偷懶,你還是把數據寫文件里,然後把這麼多個直接直接讀進float數組就好了。不要保存文本文件。
當然了,就算你讀進來,你也不能聲明float[600][800],你要new float[600*800]。
放到堆裡面,棧空間有限制,放到main外面全局亦可
哥們兒。我以前也做過這個實驗,強烈建議放在文件裡面讀寫,實際效率不會低太多。
因為最關鍵的問題是,這麼大的數據放到IDE裡面,很他媽的卡!!!
至於opencv的Mat初始化,怎麼給你講呢。。。你怎麼初始化都是一樣的效率。不會影響效率。。。
#include &
using namespace cv;
手動斜眼
在設置中加大棧大小,再編譯鏈接
看看mat的初始化吧,有一個構造函數是:Mat(width,height,type,*data)。若沒有這個 可以 Mat m(width,height,type),
然後 m.data=coefs mat. 建議你看看 文檔吧。尤其是 Mat 的構造函數,十幾個呢,看看哪個適合你。
棧的空間沒有那麼大,可以試試new,放到堆上。
應該是msvc編譯器的鍋吧?@vczh
沒有這樣用過。。。
建議先申請Mat,然後用txt讀取數據的方式進行Mat逐個賦值,這樣做是肯定沒問題的。推薦閱讀: