Source code for continuousflex.protocols.utilities.OF_plots

import matplotlib
# matplotlib.use('Qt5Agg')
import matplotlib.pyplot as plt
# ['GTK3Agg', 'GTK3Cairo', 'MacOSX', 'nbAgg', 'Qt4Agg', 'Qt4Cairo', 'Qt5Agg', 'Qt5Cairo', 'TkAgg', 'TkCairo', 'WebAgg',
# 'WX', 'WXAgg', 'WXCairo', 'agg', 'cairo', 'pdf', 'pgf', 'ps', 'svg', 'template']
import numpy as np
from scipy.signal import resample_poly


[docs]def plot_quiver_2d(flow, title='optical flow'): u = flow[:, :, 0] v = flow[:, :, 1] num_rows = np.shape(flow)[0] num_cols = np.shape(flow)[1] x = np.arange(0, num_rows, 1) y = np.arange(0, num_cols, 1) y_pos, x_pos = np.meshgrid(y, x) fig, ax = plt.subplots() ax.quiver(y_pos, x_pos, v, u) plt.gca().invert_yaxis() plt.title(title) plt.show()
[docs]def plot_quiver_3d(flow, downsample=2, title='3D optical flow', normalize=False): u = flow[0, :, :, :] v = flow[1, :, :, :] w = flow[2, :, :, :] num_x = np.shape(flow)[1] num_y = np.shape(flow)[2] num_z = np.shape(flow)[3] factors = [(1, downsample), (1, downsample), (1, downsample)] for k in range(3): u = resample_poly(u, factors[k][0], factors[k][1], axis=k) v = resample_poly(v, factors[k][0], factors[k][1], axis=k) w = resample_poly(w, factors[k][0], factors[k][1], axis=k) x = np.arange(0, int(num_x / downsample), 1) y = np.arange(0, int(num_y / downsample), 1) z = np.arange(0, int(num_z / downsample), 1) x_pos, y_pos, z_pos = np.meshgrid(x, y, z) fig = plt.figure() ax = fig.gca(projection='3d') ax.quiver3D(x_pos, y_pos, z_pos, u, v, w, length=0.1, normalize=normalize) plt.title(title) plt.show()