在visual studio+opencv中初始化圖像矩陣(從來沒見人這麼做過)?

兩種方法:如果用二維數組發現工程一直顯示在生成,這個矩陣(大小為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逐個賦值,這樣做是肯定沒問題的。


推薦閱讀:

TAG:OpenCV | VisualC | 二維數組 |