| from pathlib import Path |
| from PIL import Image |
| import numpy as np |
|
|
| from .view_identity import IdentityView |
| from .view_flip import FlipView |
| from .view_rotate import Rotate180View, Rotate90CCWView, Rotate90CWView |
| from .view_negate import NegateView |
| from .view_skew import SkewView |
| from .view_patch_permute import PatchPermuteView |
| from .view_jigsaw import JigsawView |
| from .view_inner_circle import InnerCircleView |
|
|
| VIEW_MAP = { |
| 'identity': IdentityView, |
| 'flip': FlipView, |
| 'rotate_cw': Rotate90CWView, |
| 'rotate_ccw': Rotate90CCWView, |
| 'rotate_180': Rotate180View, |
| 'negate': NegateView, |
| 'skew': SkewView, |
| 'patch_permute': PatchPermuteView, |
| 'pixel_permute': PatchPermuteView, |
| 'jigsaw': JigsawView, |
| 'inner_circle': InnerCircleView, |
| } |
|
|
| VIEW_MAP_NAMES = { |
| 'Flip': 'flip', |
| 'Rotate 90°': 'rotate_cw', |
| 'Invert colors': 'negate', |
| 'Shear': 'skew', |
| 'Jigsaw': 'jigsaw', |
| 'Rotate inner circle': 'inner_circle', |
| } |
|
|
| def get_views(view_names): |
| ''' |
| Bespoke function to get views (just to make command line usage easier) |
| ''' |
| views = [] |
| for view_name in view_names: |
| if view_name == 'patch_permute': |
| args = [8] |
| elif view_name == 'pixel_permute': |
| args = [64] |
| elif view_name == 'skew': |
| args = [1.5] |
| else: |
| args = [] |
|
|
| view = VIEW_MAP[view_name](*args) |
| views.append(view) |
|
|
| return views |
|
|