@@ -327,4 +327,189 @@ TEST(ximgproc_StMorph_decomp, feature_visualize) {
327
327
328
328
#pragma endregion
329
329
330
+ #pragma region morph_comp
331
+
332
+ TEST (ximgproc_StMorph_eval, pdi)
333
+ {
334
+ Mat img = im (CV_8UC3);
335
+ Mat dst;
336
+ int sizes[]{ 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 , 35 , 41 , 45 , 51 , 55 , 61 , 71 ,
337
+ 81 , 91 , 101 , 121 , 151 , 171 , 201 , 221 , 251 , 301 , 351 , 401 , 451 , 501 };
338
+
339
+ std::ofstream ss (" opencvlog_pdi.txt" , std::ios_base::out);
340
+
341
+ for (int c = 0 ; c < 3 ; c++)
342
+ for (int i: sizes)
343
+ {
344
+ ss << i;
345
+ Size sz (i, i);
346
+ cv::TickMeter meter;
347
+ Mat kn;
348
+ stMorph::kernelDecompInfo kdi;
349
+
350
+ // cv-rect
351
+ kn = getStructuringElement (MORPH_RECT, sz);
352
+ if (i <= 401 )
353
+ {
354
+ meter.start ();
355
+ cv::erode (img, dst, kn);
356
+ meter.stop ();
357
+ ss << " \t " << meter.getTimeMilli ();
358
+ meter.reset ();
359
+ }
360
+ else
361
+ {
362
+ ss << " \t " ;
363
+ }
364
+
365
+ // cv-cross
366
+ kn = getStructuringElement (MORPH_CROSS, sz);
367
+ if (i <= 401 )
368
+ {
369
+ meter.start ();
370
+ cv::erode (img, dst, kn);
371
+ meter.stop ();
372
+ ss << " \t " << meter.getTimeMilli ();
373
+ meter.reset ();
374
+ }
375
+ else
376
+ {
377
+ ss << " \t " ;
378
+ }
379
+
380
+ // cv-ellipse
381
+ kn = getStructuringElement (MORPH_ELLIPSE, sz);
382
+ if (i <= 23 )
383
+ {
384
+ meter.start ();
385
+ cv::erode (img, dst, kn);
386
+ meter.stop ();
387
+ ss << " \t " << meter.getTimeMilli ();
388
+ meter.reset ();
389
+ }
390
+ else
391
+ {
392
+ ss << " \t " ;
393
+ }
394
+
395
+ // st-rect
396
+ kn = getStructuringElement (MORPH_RECT, sz);
397
+ kdi = stMorph::decompKernel (kn);
398
+ meter.start ();
399
+ stMorph::erode (img, dst, kdi);
400
+ meter.stop ();
401
+ ss << " \t " << meter.getTimeMilli ();
402
+ meter.reset ();
403
+
404
+ // st-cross
405
+ kn = getStructuringElement (MORPH_CROSS, sz);
406
+ kdi = stMorph::decompKernel (kn);
407
+ meter.start ();
408
+ stMorph::erode (img, dst, kdi);
409
+ meter.stop ();
410
+ ss << " \t " << meter.getTimeMilli ();
411
+ meter.reset ();
412
+
413
+ // st-ellipse
414
+ kn = getStructuringElement (MORPH_ELLIPSE, sz);
415
+ kdi = stMorph::decompKernel (kn);
416
+ meter.start ();
417
+ stMorph::erode (img, dst, kdi);
418
+ meter.stop ();
419
+ ss << " \t " << meter.getTimeMilli () << " \n " ;
420
+ meter.reset ();
421
+ }
422
+ ss.close ();
423
+ }
424
+
425
+ TEST (ximgproc_StMorph_eval, integrated)
426
+ {
427
+ Mat img = im (CV_8UC3);
428
+ Mat dst;
429
+ int sizes[]{ 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 , 35 , 41 , 45 , 51 , 55 , 61 , 71 ,
430
+ 81 , 91 , 101 , 121 , 151 , 171 , 201 , 221 , 251 , 301 , 351 , 401 , 451 , 501 };
431
+
432
+ std::ofstream ss (" opencvlog_integrated.txt" , std::ios_base::out);
433
+
434
+ for (int c = 0 ; c < 3 ; c++)
435
+ for (int i: sizes)
436
+ {
437
+ ss << i;
438
+ Size sz (i, i);
439
+ cv::TickMeter meter;
440
+ Mat kn;
441
+
442
+ // cv-rect
443
+ kn = getStructuringElement (MORPH_RECT, sz);
444
+ if (i <= 401 )
445
+ {
446
+ meter.start ();
447
+ cv::erode (img, dst, kn);
448
+ meter.stop ();
449
+ ss << " \t " << meter.getTimeMilli ();
450
+ meter.reset ();
451
+ }
452
+ else
453
+ {
454
+ ss << " \t " ;
455
+ }
456
+
457
+ // cv-cross
458
+ kn = getStructuringElement (MORPH_CROSS, sz);
459
+ if (i <= 401 )
460
+ {
461
+ meter.start ();
462
+ cv::erode (img, dst, kn);
463
+ meter.stop ();
464
+ ss << " \t " << meter.getTimeMilli ();
465
+ meter.reset ();
466
+ }
467
+ else
468
+ {
469
+ ss << " \t " ;
470
+ }
471
+
472
+ // cv-ellipse
473
+ kn = getStructuringElement (MORPH_ELLIPSE, sz);
474
+ if (i <= 23 )
475
+ {
476
+ meter.start ();
477
+ cv::erode (img, dst, kn);
478
+ meter.stop ();
479
+ ss << " \t " << meter.getTimeMilli ();
480
+ meter.reset ();
481
+ }
482
+ else
483
+ {
484
+ ss << " \t " ;
485
+ }
486
+
487
+ // st-rect
488
+ kn = getStructuringElement (MORPH_RECT, sz);
489
+ meter.start ();
490
+ stMorph::erode (img, dst, kn);
491
+ meter.stop ();
492
+ ss << " \t " << meter.getTimeMilli ();
493
+ meter.reset ();
494
+
495
+ // st-cross
496
+ kn = getStructuringElement (MORPH_CROSS, sz);
497
+ meter.start ();
498
+ stMorph::erode (img, dst, kn);
499
+ meter.stop ();
500
+ ss << " \t " << meter.getTimeMilli ();
501
+ meter.reset ();
502
+
503
+ // st-ellipse
504
+ kn = getStructuringElement (MORPH_ELLIPSE, sz);
505
+ meter.start ();
506
+ stMorph::erode (img, dst, kn);
507
+ meter.stop ();
508
+ ss << " \t " << meter.getTimeMilli () << " \n " ;
509
+ meter.reset ();
510
+ }
511
+ ss.close ();
512
+ }
513
+ #pragma endregion
514
+
330
515
}} // opencv_test:: ::
0 commit comments