MCPcopy Create free account
hub / github.com/creatale/node-dv / cvReadRawDataSlice

Function cvReadRawDataSlice

deps/opencv/modules/core/src/persistence.cpp:3251–3397  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3249
3250
3251CV_IMPL void
3252cvReadRawDataSlice( const CvFileStorage* fs, CvSeqReader* reader,
3253 int len, void* _data, const char* dt )
3254{
3255 char* data0 = (char*)_data;
3256 int fmt_pairs[CV_FS_MAX_FMT_PAIRS*2], k = 0, fmt_pair_count;
3257 int i = 0, offset = 0, count = 0;
3258
3259 CV_CHECK_FILE_STORAGE( fs );
3260
3261 if( !reader || !data0 )
3262 CV_Error( CV_StsNullPtr, "Null pointer to reader or destination array" );
3263
3264 if( !reader->seq && len != 1 )
3265 CV_Error( CV_StsBadSize, "The readed sequence is a scalar, thus len must be 1" );
3266
3267 fmt_pair_count = icvDecodeFormat( dt, fmt_pairs, CV_FS_MAX_FMT_PAIRS );
3268
3269 for(;;)
3270 {
3271 for( k = 0; k < fmt_pair_count; k++ )
3272 {
3273 int elem_type = fmt_pairs[k*2+1];
3274 int elem_size = CV_ELEM_SIZE(elem_type);
3275 char* data;
3276
3277 count = fmt_pairs[k*2];
3278 offset = cvAlign( offset, elem_size );
3279 data = data0 + offset;
3280
3281 for( i = 0; i < count; i++ )
3282 {
3283 CvFileNode* node = (CvFileNode*)reader->ptr;
3284 if( CV_NODE_IS_INT(node->tag) )
3285 {
3286 int ival = node->data.i;
3287
3288 switch( elem_type )
3289 {
3290 case CV_8U:
3291 *(uchar*)data = CV_CAST_8U(ival);
3292 data++;
3293 break;
3294 case CV_8S:
3295 *(char*)data = CV_CAST_8S(ival);
3296 data++;
3297 break;
3298 case CV_16U:
3299 *(ushort*)data = CV_CAST_16U(ival);
3300 data += sizeof(ushort);
3301 break;
3302 case CV_16S:
3303 *(short*)data = CV_CAST_16S(ival);
3304 data += sizeof(short);
3305 break;
3306 case CV_32S:
3307 *(int*)data = ival;
3308 data += sizeof(int);

Callers 7

cvReadRawDataFunction · 0.85
icvReadSparseMatFunction · 0.85
icvReadImageFunction · 0.85
icvReadSeqFunction · 0.85
icvReadGraphFunction · 0.85
persistence.cppFile · 0.85
icvReadHistFunction · 0.85

Calls 3

icvDecodeFormatFunction · 0.85
cvAlignFunction · 0.85
cvRoundFunction · 0.85

Tested by

no test coverage detected