资源简介

EXR格式图片Matlab读写插件 通过该插件,可以在Matlab中完成对OpenEXR格式图片的读写操作。

资源截图

代码片段和文件信息

/*
 * MATLAB MEX function for displaying channel types of an EXR image.
 * 
 */


#include 

#include “ImfRgbaFile.h“
#include “ImfStringAttribute.h“
#include “ImfMatrixAttribute.h“
#include “ImfChannelList.h“
#include “ImfPixelType.h“
#include “Iex.h“

#include “mex.h“ 

using namespace Imf;
using namespace Imath;
using namespace Iex;

using std::cout;
using std::endl;
using std::flush;


/*
 * Check inputs:
 * only one input argument that is a string (row vector of chars)
 * one or two output arguments
 * 
 * These checks were copied from the MATLAB example file revord.c
 */
void checkInputs(int nlhs mxArray *plhs[] int nrhs const mxArray *prhs[]) {

if (nrhs != 1)
mexErrMsgTxt(“Incorrect number of input arguments“);

if (nlhs > 1)
mexErrMsgTxt(“Incorrect number of output arguments“);

if (mxIsChar(prhs[0]) != 1)
mexErrMsgTxt(“Input must be a string“);

if (mxGetM(prhs[0]) != 1)
mexErrMsgTxt(“Input must be a row vector.“);

return;
}

/*
 * Read the header of an EXR file.
 * Code follows examples from ReadingAndWritingImageFiles.pdf found
 * here:
 * http://www.openexr.com/ReadingAndWritingImageFiles.pdf
 */
void mexFunction(int nlhs mxArray *plhs[] int nrhs const mxArray *prhs[]) { 

checkInputs(nlhs plhs nrhs prhs);
char *filename = mxArrayToString(prhs[0]);

try {
RgbaInputFile file(filename);

const ChannelList &ch = file.header().channels();
int ix = 1;
for (ChannelList::ConstIterator i = ch.begin(); i != ch.end(); ++i) {
const Channel &channel = i.channel(); 
PixelType type = channel.type;
const char* t = (type == UINT) ? “uint“ : 
((type == HALF) ? “half“ : “float“);

cout << “channel “ << ix++ << “: “;
cout << t << endl;
}
const StringAttribute *comments =
file.header().findTypedAttribute  (“comments“);

const M44fAttribute *cameraTransform = 
file.header().findTypedAttribute  (“cameraTransform“);

if (comments)
cout << “comments\n   “ << comments->value() << endl;

if (cameraTransform)
cout << “cameraTransform\n“ << cameraTransform->value() << flush;

} catch (const std::exception &exc) {
mexErrMsgTxt(exc.what());
}

// Free the memory for the string
mxFree(filename);

return;





 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2009-05-21 17:37  MatlabEXR\
     文件        2254  2009-05-21 17:23  MatlabEXR\exrinfo.cpp
     目录           0  2009-05-21 17:37  __MACOSX\
     目录           0  2009-05-21 17:37  __MACOSX\MatlabEXR\
     文件          82  2009-05-21 17:23  __MACOSX\MatlabEXR\._exrinfo.cpp
     文件         341  2008-03-11 09:26  MatlabEXR\exrinfo.m
     文件        3734  2009-05-21 17:23  MatlabEXR\exrread.cpp
     文件          82  2009-05-21 17:23  __MACOSX\MatlabEXR\._exrread.cpp
     文件         405  2008-03-11 11:08  MatlabEXR\exrread.m
     文件        3572  2009-05-21 17:23  MatlabEXR\exrwrite.cpp
     文件          82  2009-05-21 17:23  __MACOSX\MatlabEXR\._exrwrite.cpp
     文件         414  2008-03-11 09:38  MatlabEXR\exrwrite.m
     文件        1283  2009-05-21 17:26  MatlabEXR\README.txt
     文件          82  2009-05-21 17:26  __MACOSX\MatlabEXR\._README.txt

评论

共有 条评论