Spaces:
Sleeping
Sleeping
| # Copyright (c) OpenMMLab. All rights reserved. | |
| import os.path as osp | |
| import tempfile | |
| import unittest | |
| import cv2 | |
| import numpy as np | |
| from mmengine.structures import LabelData | |
| from mmocr.structures import TextRecogDataSample | |
| from mmocr.visualization import TextRecogLocalVisualizer | |
| class TestTextDetLocalVisualizer(unittest.TestCase): | |
| def test_add_datasample(self): | |
| h, w = 64, 128 | |
| image = np.random.randint(0, 256, size=(h, w, 3)).astype('uint8') | |
| # test gt_text | |
| data_sample = TextRecogDataSample() | |
| img_meta = dict(img_shape=(12, 10, 3)) | |
| gt_text = LabelData(metainfo=img_meta) | |
| gt_text.item = 'mmocr' | |
| data_sample.gt_text = gt_text | |
| recog_local_visualizer = TextRecogLocalVisualizer() | |
| recog_local_visualizer.add_datasample('image', image, data_sample) | |
| # test gt_text and pred_text | |
| pred_text = LabelData(metainfo=img_meta) | |
| pred_text.item = 'MMOCR' | |
| data_sample.pred_text = pred_text | |
| with tempfile.TemporaryDirectory() as tmp_dir: | |
| # test out | |
| out_file = osp.join(tmp_dir, 'out_file.jpg') | |
| # draw_gt = True + gt_sample | |
| recog_local_visualizer.add_datasample( | |
| 'image', | |
| image, | |
| data_sample, | |
| out_file=out_file, | |
| draw_gt=True, | |
| draw_pred=False) | |
| self._assert_image_and_shape(out_file, (h * 2, w, 3)) | |
| # draw_gt = True | |
| recog_local_visualizer.add_datasample( | |
| 'image', | |
| image, | |
| data_sample, | |
| out_file=out_file, | |
| draw_gt=True, | |
| draw_pred=True) | |
| self._assert_image_and_shape(out_file, (h * 3, w, 3)) | |
| # draw_gt = False | |
| recog_local_visualizer.add_datasample( | |
| 'image', image, data_sample, draw_gt=False, out_file=out_file) | |
| self._assert_image_and_shape(out_file, (h * 2, w, 3)) | |
| # gray image | |
| image = np.random.randint(0, 256, size=(h, w)).astype('uint8') | |
| recog_local_visualizer.add_datasample( | |
| 'image', image, data_sample, draw_gt=False, out_file=out_file) | |
| self._assert_image_and_shape(out_file, (h * 2, w, 3)) | |
| def _assert_image_and_shape(self, out_file, out_shape): | |
| self.assertTrue(osp.exists(out_file)) | |
| drawn_img = cv2.imread(out_file) | |
| self.assertTrue(drawn_img.shape == out_shape) | |