由於最近有需求對OpenEXR格式的圖片進行處理,而Matlab本身並不支持OpenEXR格式的圖片讀寫。發現在網上有一個插件,使用該插件可以在Matlab中直接使用exrread/exrwrite對OpenEXR格式的圖片進行處理:
網址為:http://www.mit.edu/~kimo/software/Matlabexr/
為了防止該網址失效,我將該插件放在了資源裡:
免費下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /2012年資料/8月/18日/Windows下在Matlab中讀寫OpenEXR格式的圖片
1)Windows下安裝編譯IlmBase,Zlib,OpenEXR 見 http://www.linuxidc.com/Linux/2012-08/68605.htm
2)解壓MatlabEXR.zip到指定目錄,並將該目錄加入Matlab路徑中。
cd到該目錄
mex exrwrite.cpp -lHalf -lIlmImf -IC:\Deploy\include -LC:\Deploy\lib\Win32\Release
mex exrinfo.cpp -lIlmImf -lHalf -IC:\Deploy\include -LC:\Deploy\lib\Win32\Release
mex exrwrite.cpp -lIlmImf -lHalf -IC:\Deploy\include -LC:\Deploy\lib\Win32\Release
遇到問題及解決方案:
1)exrread.obj: error LNK2019: unresolved external symbol "private: static unionhalf::uif const * const half::_toFloat" (?_toFloat@half@@0QBTuif@1@B)referenced in function "public: __thiscall half::operator float(void)const" (??Bhalf@@QBEMXZ)
exrread.mexw32: fatal error LNK1120: 1 unresolved externals
解決方法:在exrread.cpp,exrinfo.cpp和exrwrite.cpp前加上一行
#define OPENEXR_DLL
2)Invalid MEX-file'C:\Users\IMI_User\Documents\MATLAB\MatlabEXR\MatlabEXR\exrread.mexw32': The specified module could not be found.
解決方法:將OpenEXR的dll路徑添加到系統環境變量。