Home | History | Annotate | Download | only in src

Lines Matching full:scanner

146     CvPoint pt;                 /* current scanner position */
178 Initializes scanner structure.
210 CvContourScanner scanner = (CvContourScanner)cvAlloc( sizeof( *scanner ));
211 memset( scanner, 0, sizeof(*scanner) );
213 scanner->storage1 = scanner->storage2 = storage;
214 scanner->img0 = (schar *) img;
215 scanner->img = (schar *) (img + step);
216 scanner->img_step = step;
217 scanner->img_size.width = size.width - 1; /* exclude rightest column */
218 scanner->img_size.height = size.height - 1; /* exclude bottomost row */
219 scanner->mode = mode;
220 scanner->offset = offset;
221 scanner->pt.x = scanner->pt.y = 1;
222 scanner->lnbd.x = 0;
223 scanner->lnbd.y = 1;
224 scanner->nbd = 2;
225 scanner->mode = (int) mode;
226 scanner->frame_info.contour = &(scanner->frame);
227 scanner->frame_info.is_hole = 1;
228 scanner->frame_info.next = 0;
229 scanner->frame_info.parent = 0;
230 scanner->frame_info.rect = cvRect( 0, 0, size.width, size.height );
231 scanner->l_cinfo = 0;
232 scanner->subst_flag = 0;
234 scanner->frame.flags = CV_SEQ_FLAG_HOLE;
236 scanner->approx_method2 = scanner->approx_method1 = method;
239 scanner->approx_method1 = CV_CHAIN_CODE;
241 if( scanner->approx_method1 == CV_CHAIN_CODE )
243 scanner->seq_type1 = CV_SEQ_CHAIN_CONTOUR;
244 scanner->header_size1 = scanner->approx_method1 == scanner->approx_method2 ?
246 scanner->elem_size1 = sizeof( char );
250 scanner->seq_type1 = CV_SEQ_POLYGON;
251 scanner->header_size1 = scanner->approx_method1 == scanner->approx_method2 ?
253 scanner->elem_size1 = sizeof( CvPoint );
256 scanner->header_size2 = header_size;
258 if( scanner->approx_method2 == CV_CHAIN_CODE )
260 scanner->seq_type2 = scanner->seq_type1;
261 scanner->elem_size2 = scanner->elem_size1;
265 scanner->seq_type2 = CV_SEQ_POLYGON;
266 scanner->elem_size2 = sizeof( CvPoint );
269 scanner->seq_type1 = scanner->approx_method1 == CV_CHAIN_CODE ?
272 scanner->seq_type2 = scanner->approx_method2 == CV_CHAIN_CODE ?
275 cvSaveMemStoragePos( storage, &(scanner->initial_pos) );
279 scanner->storage1 = cvCreateChildMemStorage( scanner->storage2 );
284 scanner->cinfo_storage = cvCreateChildMemStorage( scanner->storage2 );
285 scanner->cinfo_set = cvCreateSet( 0, sizeof( CvSet ), sizeof( _CvContourInfo ),
286 scanner->cinfo_storage );
305 return scanner;
337 icvContourScanner scanner;
352 &scanner );
357 result = icvFindNextContour( &scanner, &contour/0 );
367 cvEndFindContours( &scanner, &first_contour );
378 icvContourScanner scanner;
395 &scanner );
401 result = icvFindNextContour( scanner, &temp_contour );
408 icvSubstituteContour( scanner, new_contour );
414 cvEndFindContours( &scanner, &first_contour );
425 result = icvFindNextContour( &scanner, &temp_contour );
431 icvSubstituteContour( scanner, 0 );
445 icvEndProcessContour( CvContourScanner scanner )
447 _CvContourInfo *l_cinfo = scanner->l_cinfo;
451 if( scanner->subst_flag )
455 cvSaveMemStoragePos( scanner->storage2, &temp );
457 if( temp.top == scanner->backup_pos2.top &&
458 temp.free_space == scanner->backup_pos2.free_space )
460 cvRestoreMemStoragePos( scanner->storage2, &scanner->backup_pos );
462 scanner->subst_flag = 0;
468 &(scanner->frame) );
470 scanner->l_cinfo = 0;
476 cvSubstituteContour( CvContourScanner scanner, CvSeq * new_contour )
480 if( !scanner )
483 l_cinfo = scanner->l_cinfo;
487 scanner->subst_flag = 1;
990 cvFindNextContour( CvContourScanner scanner )
992 if( !scanner )
994 icvEndProcessContour( scanner );
997 schar* img0 = scanner->img0;
998 schar* img = scanner->img;
999 int step = scanner->img_step;
1001 int x = scanner->pt.x;
1002 int y = scanner->pt.y;
1003 int width = scanner->img_size.width;
1004 int height = scanner->img_size.height;
1005 int mode = scanner->mode;
1006 CvPoint lnbd = scanner->lnbd;
1007 int nbd = scanner->nbd;
1077 par_info = &(scanner->frame_info);
1084 _CvContourInfo *cur = scanner->cinfo_table[lval];
1121 par_info = &(scanner->frame_info);
1132 cvSaveMemStoragePos( scanner->storage2, &(scanner->backup_pos) );
1134 seq = cvCreateSeq( scanner->seq_type1, scanner->header_size1,
1135 scanner->elem_size1, scanner->storage1 );
1141 l_cinfo = &(scanner->cinfo_temp);
1143 cvPoint( origin.x + scanner->offset.x,
1144 origin.y + scanner->offset.y),
1145 seq, scanner->approx_method1 );
1151 cvSetAdd( scanner->cinfo_set, 0, &v.se );
1159 cvPoint( origin.x + scanner->offset.x,
1160 origin.y + scanner->offset.y),
1161 seq, scanner->approx_method1,
1171 cvPoint( origin.x + scanner->offset.x,
1172 origin.y + scanner->offset.y),
1173 seq, scanner->approx_method1,
1176 l_cinfo->rect.x -= scanner->offset.x;
1177 l_cinfo->rect.y -= scanner->offset.y;
1179 l_cinfo->next = scanner->cinfo_table[lval];
1180 scanner->cinfo_table[lval] = l_cinfo;
1188 if( scanner->approx_method1 != scanner->approx_method2 )
1191 scanner->header_size2,
1192 scanner->storage2,
1193 scanner->approx_method2 );
1194 cvClearMemStorage( scanner->storage1 );
1202 if( scanner->storage1 == scanner->storage2 )
1204 cvRestoreMemStoragePos( scanner->storage1, &(scanner->backup_pos) );
1208 cvClearMemStorage( scanner->storage1 );
1214 cvSaveMemStoragePos( scanner->storage2, &(scanner->backup_pos2) );
1215 scanner->l_cinfo = l_cinfo;
1216 scanner->pt.x = !img_i ? x + 1 : x + 1 - is_hole;
1217 scanner->pt.y = y;
1218 scanner->lnbd = lnbd;
1219 scanner->img = (schar *) img;
1220 scanner->nbd = nbd;
1251 CvContourScanner scanner;
1256 scanner = *_scanner;
1258 if( scanner )
1260 icvEndProcessContour( scanner );
1262 if( scanner->storage1 != scanner->storage2 )
1263 cvReleaseMemStorage( &(scanner->storage1) );
1265 if( scanner->cinfo_storage )
1266 cvReleaseMemStorage( &(scanner->cinfo_storage) );
1268 first = scanner->frame.v_next;
1662 CvContourScanner scanner = 0;
1683 scanner = cvStartFindContours( img, storage, cntHeaderSize, mode, method, offset );
1688 contour = cvFindNextContour( scanner );
1694 if( scanner )
1695 cvEndFindContours(&scanner);
1699 *firstContour = cvEndFindContours( &scanner );