本文整理汇总了C++中ChannelInfo::size方法的典型用法代码示例。如果您正苦于以下问题:C++ ChannelInfo::size方法的具体用法?C++ ChannelInfo::size怎么用?C++ ChannelInfo::size使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ChannelInfo
的用法示例。
在下文中一共展示了ChannelInfo::size方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Convert
Nrrd* LSMReader::Convert(int t, int c, bool get_max)
{
Nrrd *data = 0;
FILE* pfile = 0;
if (!WFOPEN(&pfile, m_path_name.c_str(), L"rb"))
return 0;
int i, j;
if (t>=0 && t<m_time_num &&
c>=0 && c<m_chan_num &&
m_slice_num > 0 &&
m_x_size > 0 &&
m_y_size > 0 &&
t<(int)m_lsm_info.size() &&
c<(int)m_lsm_info[t].size())
{
//allocate memory for nrrd
switch (m_datatype)
{
case 1://8-bit
{
unsigned long long mem_size = (unsigned long long)m_x_size*
(unsigned long long)m_y_size*(unsigned long long)m_slice_num;
unsigned char *val = new (std::nothrow) unsigned char[mem_size];
ChannelInfo *cinfo = &m_lsm_info[t][c];
for (i=0; i<(int)cinfo->size(); i++)
{
if (m_l4gb?
FSEEK64(pfile, ((uint64_t((*cinfo)[i].offset_high))<<32)+(*cinfo)[i].offset, SEEK_SET)==0:
fseek(pfile, (*cinfo)[i].offset, SEEK_SET)==0)
{
unsigned int val_pos = m_x_size*m_y_size*i;
if (m_compression==1)
fread(val+val_pos, sizeof(unsigned char), (*cinfo)[i].size, pfile);
else if (m_compression==5)
{
unsigned char* tif = new (std::nothrow) unsigned char[(*cinfo)[i].size];
fread(tif, sizeof(unsigned char), (*cinfo)[i].size, pfile);
LZWDecode(tif, val+val_pos, (*cinfo)[i].size);
for (j=0; j<m_y_size; j++)
DecodeAcc8(val+val_pos+j*m_x_size, m_x_size,1);
delete []tif;
}
}
}
//create nrrd
data = nrrdNew();
nrrdWrap(data, val, nrrdTypeUChar, 3, (size_t)m_x_size, (size_t)m_y_size, (size_t)m_slice_num);
nrrdAxisInfoSet(data, nrrdAxisInfoSpacing, m_xspc, m_yspc, m_zspc);
nrrdAxisInfoSet(data, nrrdAxisInfoMax, m_xspc*m_x_size, m_yspc*m_y_size, m_zspc*m_slice_num);
nrrdAxisInfoSet(data, nrrdAxisInfoMin, 0.0, 0.0, 0.0);
nrrdAxisInfoSet(data, nrrdAxisInfoSize, (size_t)m_x_size, (size_t)m_y_size, (size_t)m_slice_num);
}
break;
case 2://16-bit
case 3:
{
unsigned long long mem_size = (unsigned long long)m_x_size*
(unsigned long long)m_y_size*(unsigned long long)m_slice_num;
unsigned short *val = new (std::nothrow) unsigned short[mem_size];
ChannelInfo *cinfo = &m_lsm_info[t][c];
for (i=0; i<(int)cinfo->size(); i++)
{
if (m_l4gb?
FSEEK64(pfile, ((uint64_t((*cinfo)[i].offset_high))<<32)+(*cinfo)[i].offset, SEEK_SET)==0:
fseek(pfile, (*cinfo)[i].offset, SEEK_SET)==0)
{
unsigned int val_pos = m_x_size*m_y_size*i;
if (m_compression==1)
fread(val+val_pos, sizeof(unsigned char), (*cinfo)[i].size, pfile);
else if (m_compression==5)
{
unsigned char* tif = new (std::nothrow) unsigned char[(*cinfo)[i].size];
fread(tif, sizeof(unsigned char), (*cinfo)[i].size, pfile);
LZWDecode(tif, (tidata_t)(val+val_pos), (*cinfo)[i].size);
for (j=0; j<m_y_size; j++)
DecodeAcc16((tidata_t)(val+val_pos+j*m_x_size), m_x_size,1);
delete []tif;
}
}
}
//create nrrd
data = nrrdNew();
nrrdWrap(data, val, nrrdTypeUShort, 3, (size_t)m_x_size, (size_t)m_y_size, (size_t)m_slice_num);
nrrdAxisInfoSet(data, nrrdAxisInfoSpacing, m_xspc, m_yspc, m_zspc);
nrrdAxisInfoSet(data, nrrdAxisInfoMax, m_xspc*m_x_size, m_yspc*m_y_size, m_zspc*m_slice_num);
nrrdAxisInfoSet(data, nrrdAxisInfoMin, 0.0, 0.0, 0.0);
nrrdAxisInfoSet(data, nrrdAxisInfoSize, (size_t)m_x_size, (size_t)m_y_size, (size_t)m_slice_num);
}
break;
}
}
fclose(pfile);
return data;
}
示例2: Convert
Nrrd* OIFReader::Convert(int t, int c, bool get_max)
{
Nrrd *data = 0;
int sl_num = 0;
if (t>=0 && t<m_time_num &&
c>=0 && c<m_chan_num &&
m_slice_num>0 &&
m_x_size>0 &&
m_y_size>0)
{
//allocate memory for nrrd
unsigned long long mem_size = (unsigned long long)m_x_size*
(unsigned long long)m_y_size*(unsigned long long)m_slice_num;
unsigned short *val = new (std::nothrow) unsigned short[mem_size];
//read the channel
ChannelInfo *cinfo = &m_oif_info[t].dataset[c];
int i;
for (i=0; i<int(cinfo->size()); i++)
{
char *pbyData = 0;
wstring file_name = (*cinfo)[i];
//open file
ifstream is;
#ifdef _WIN32
is.open(file_name.c_str(), ios::binary);
#else
is.open(ws2s(file_name).c_str(), ios::binary);
#endif
if (is.is_open())
{
is.seekg(0, ios::end);
size_t size = is.tellg();
pbyData = new char[size];
is.seekg(0, ios::beg);
is.read(pbyData, size);
is.close();
//read
ReadTiff(pbyData, val, i);
//increase
sl_num++;
}
if (pbyData)
delete []pbyData;
}
//create nrrd
if (val && sl_num == m_slice_num)
{
//ok
data = nrrdNew();
nrrdWrap(data, val, nrrdTypeUShort, 3, (size_t)m_x_size, (size_t)m_y_size, (size_t)m_slice_num);
nrrdAxisInfoSet(data, nrrdAxisInfoSpacing, m_xspc, m_yspc, m_zspc);
nrrdAxisInfoSet(data, nrrdAxisInfoMax, m_xspc*m_x_size, m_yspc*m_y_size, m_zspc*m_slice_num);
nrrdAxisInfoSet(data, nrrdAxisInfoMin, 0.0, 0.0, 0.0);
nrrdAxisInfoSet(data, nrrdAxisInfoSize, (size_t)m_x_size, (size_t)m_y_size, (size_t)m_slice_num);
}
else
{
//something is wrong
if (val)
delete []val;
}
}
if (m_max_value > 0.0)
m_scalar_scale = 65535.0 / m_max_value;
m_cur_time = t;
return data;
}
示例3: pStg
Nrrd *OIBReader::Convert(int t, int c, bool get_max)
{
Nrrd *data = 0;
int sl_num = 0;
if (t>=0 && t<m_time_num &&
c>=0 && c<m_chan_num &&
m_slice_num > 0 &&
m_x_size > 0 &&
m_y_size > 0)
{
unsigned char *pbyData = 0;
wstring path_name = m_type==0?m_path_name:m_oib_info[t].filename;
//storage
POLE::Storage pStg(ws2s(path_name).c_str());
//open
if (pStg.open()) {
//allocate memory for nrrd
unsigned long long mem_size = (unsigned long long)m_x_size*
(unsigned long long)m_y_size*(unsigned long long)m_slice_num;
unsigned short *val = new (std::nothrow) unsigned short[mem_size];
//enumerate
std::list<std::string> entries =
pStg.entries();
for(std::list<std::string>::iterator it = entries.begin();
it != entries.end(); ++it) {
if (pStg.isDirectory(*it)) {
std::list<std::string> streams = pStg.GetAllStreams(*it);
size_t num = 0;
ChannelInfo *cinfo = &m_oib_info[t].dataset[c];
for(std::list<std::string>::iterator its = streams.begin();
its != streams.end(); ++its) {
if (num >= cinfo->size()) break;
//fix the stream name
std::string str_name = ws2s((*cinfo)[num].stream_name);
std::string name = (*it) + std::string("/") + str_name;
POLE::Stream pStm(&pStg,name);
//open
if (!pStm.eof() && !pStm.fail())
{
//get stream size
size_t sz = pStm.size();
//allocate
pbyData = new unsigned char[sz];
if (!pbyData)
return NULL;
//read
if (pStm.read(pbyData,sz)) {
//copy tiff to val
ReadTiff(pbyData, val, num);
//increase
sl_num++;
}
}
//release
if (pbyData)
delete[] pbyData;
num++;
}
}
}
//create nrrd
if (val && sl_num == m_slice_num)
{
//ok
data = nrrdNew();
nrrdWrap(data, val, nrrdTypeUShort, 3, (size_t)m_x_size, (size_t)m_y_size,
(size_t)m_slice_num);
nrrdAxisInfoSet(data, nrrdAxisInfoSpacing, m_xspc, m_yspc, m_zspc);
nrrdAxisInfoSet(data, nrrdAxisInfoMax, m_xspc*m_x_size, m_yspc*m_y_size,
m_zspc*m_slice_num);
nrrdAxisInfoSet(data, nrrdAxisInfoMin, 0.0, 0.0, 0.0);
nrrdAxisInfoSet(data, nrrdAxisInfoSize, (size_t)m_x_size,
(size_t)m_y_size, (size_t)m_slice_num);
} else {
//something is wrong
if (val)
delete []val;
}
//release
pStg.close();
}
}
if (m_max_value > 0.0)
m_scalar_scale = 65535.0 / m_max_value;
m_cur_time = t;
return data;
}