1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- from __future__ import print_function
- import cv2 as cv
- import numpy as np
- import argparse
- ## [Update]
- def update_map(ind, map_x, map_y):
- if ind == 0:
- for i in range(map_x.shape[0]):
- for j in range(map_x.shape[1]):
- if j > map_x.shape[1]*0.25 and j < map_x.shape[1]*0.75 and i > map_x.shape[0]*0.25 and i < map_x.shape[0]*0.75:
- map_x[i,j] = 2 * (j-map_x.shape[1]*0.25) + 0.5
- map_y[i,j] = 2 * (i-map_y.shape[0]*0.25) + 0.5
- else:
- map_x[i,j] = 0
- map_y[i,j] = 0
- elif ind == 1:
- for i in range(map_x.shape[0]):
- map_x[i,:] = [x for x in range(map_x.shape[1])]
- for j in range(map_y.shape[1]):
- map_y[:,j] = [map_y.shape[0]-y for y in range(map_y.shape[0])]
- elif ind == 2:
- for i in range(map_x.shape[0]):
- map_x[i,:] = [map_x.shape[1]-x for x in range(map_x.shape[1])]
- for j in range(map_y.shape[1]):
- map_y[:,j] = [y for y in range(map_y.shape[0])]
- elif ind == 3:
- for i in range(map_x.shape[0]):
- map_x[i,:] = [map_x.shape[1]-x for x in range(map_x.shape[1])]
- for j in range(map_y.shape[1]):
- map_y[:,j] = [map_y.shape[0]-y for y in range(map_y.shape[0])]
- ## [Update]
- parser = argparse.ArgumentParser(description='Code for Remapping tutorial.')
- parser.add_argument('--input', help='Path to input image.', default='chicky_512.png')
- args = parser.parse_args()
- ## [Load]
- src = cv.imread(cv.samples.findFile(args.input), cv.IMREAD_COLOR)
- if src is None:
- print('Could not open or find the image: ', args.input)
- exit(0)
- ## [Load]
- ## [Create]
- map_x = np.zeros((src.shape[0], src.shape[1]), dtype=np.float32)
- map_y = np.zeros((src.shape[0], src.shape[1]), dtype=np.float32)
- ## [Create]
- ## [Window]
- window_name = 'Remap demo'
- cv.namedWindow(window_name)
- ## [Window]
- ## [Loop]
- ind = 0
- while True:
- update_map(ind, map_x, map_y)
- ind = (ind + 1) % 4
- dst = cv.remap(src, map_x, map_y, cv.INTER_LINEAR)
- cv.imshow(window_name, dst)
- c = cv.waitKey(1000)
- if c == 27:
- break
- ## [Loop]
|