"vscode:/vscode.git/clone" did not exist on "eead419a4cfdf2e2970c200900b93ac777d90e7b"
loading.py 2.44 KB
Newer Older
zhangwenwei's avatar
zhangwenwei committed
1
2
3
4
5
import os.path as osp

import mmcv
import numpy as np

zhangwenwei's avatar
zhangwenwei committed
6
from mmdet.datasets.registry import PIPELINES
zhangwenwei's avatar
zhangwenwei committed
7
8
9


@PIPELINES.register_module
zhangwenwei's avatar
zhangwenwei committed
10
class LoadPointsFromFile(object):
zhangwenwei's avatar
zhangwenwei committed
11

zhangwenwei's avatar
zhangwenwei committed
12
13
14
    def __init__(self, points_dim=4, with_reflectivity=True):
        self.points_dim = points_dim
        self.with_reflectivity = with_reflectivity
zhangwenwei's avatar
zhangwenwei committed
15
16

    def __call__(self, results):
zhangwenwei's avatar
zhangwenwei committed
17
18
        if results['pts_prefix'] is not None:
            filename = osp.join(results['pts_prefix'],
zhangwenwei's avatar
zhangwenwei committed
19
20
21
                                results['img_info']['filename'])
        else:
            filename = results['img_info']['filename']
zhangwenwei's avatar
zhangwenwei committed
22
23
24
        points = np.fromfile(
            filename, dtype=np.float32).reshape(-1, self.points_dim)
        results['points'] = points
zhangwenwei's avatar
zhangwenwei committed
25
26
27
28
        return results

    def __repr__(self):
        repr_str = self.__class__.__name__
zhangwenwei's avatar
zhangwenwei committed
29
30
        repr_str += '(points_dim={})'.format(self.points_dim)
        repr_str += '(points_dim={})'.format(self.with_reflectivity)
zhangwenwei's avatar
zhangwenwei committed
31
32
33
34
        return repr_str


@PIPELINES.register_module
zhangwenwei's avatar
zhangwenwei committed
35
36
37
38
class LoadMultiViewImageFromFiles(object):
    """ Load multi channel images from a list of separate channel files.
    Expects results['filename'] to be a list of filenames
    """
zhangwenwei's avatar
zhangwenwei committed
39

zhangwenwei's avatar
zhangwenwei committed
40
41
42
    def __init__(self, to_float32=False, color_type='unchanged'):
        self.to_float32 = to_float32
        self.color_type = color_type
zhangwenwei's avatar
zhangwenwei committed
43
44

    def __call__(self, results):
zhangwenwei's avatar
zhangwenwei committed
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
        if results['img_prefix'] is not None:
            filename = [
                osp.join(results['img_prefix'], fname)
                for fname in results['img_info']['filename']
            ]
        else:
            filename = results['img_info']['filename']
        img = np.stack(
            [mmcv.imread(name, self.color_type) for name in filename], axis=-1)
        if self.to_float32:
            img = img.astype(np.float32)
        results['filename'] = filename
        results['img'] = img
        results['img_shape'] = img.shape
        results['ori_shape'] = img.shape
        # Set initial values for default meta_keys
        results['pad_shape'] = img.shape
        results['scale_factor'] = 1.0
        num_channels = 1 if len(img.shape) < 3 else img.shape[2]
        results['img_norm_cfg'] = dict(
            mean=np.zeros(num_channels, dtype=np.float32),
            std=np.ones(num_channels, dtype=np.float32),
            to_rgb=False)
zhangwenwei's avatar
zhangwenwei committed
68
69
70
        return results

    def __repr__(self):
zhangwenwei's avatar
zhangwenwei committed
71
72
        return "{} (to_float32={}, color_type='{}')".format(
            self.__class__.__name__, self.to_float32, self.color_type)