This package provides quick and easy way to compute camera motion field given two consecutive images.
pip install cam-motion-field
from cam_motion_field import get_cam_flow
import cv2
image1_file = "PATH/TO/THE/FIRST/IMAGE/FILE"
image2_file = "PATH/TO/THE/SECOND/IMAGE/FILE"
ncol = 10
nrow = 10
grid_size = (ncol, nrow)
img1 = cv2.imread(image1_file, 0)
img2 = cv2.imread(image2_file, 0)
# origins.shape = (10,10,2)
# displacements.shape = (10,10,2)
origins, displacements = get_cam_flow(img1, img2, grid_size[0], grid_size[1])
The above example defines a 10x10 grid and returns 100 origins and displacement points. Both origins and displacements are absolute coordinates!
Parameters
----------
image1 : numpy array
image1 a grayscale image
image2 : numpy array
image2 a grayscale image
n_rows : int
number of rows in the grid
n_cols : int
number of columns in the grid
Examples where generated using the example.py. This gif shows two images where either the camera moved forward or some zoom effect took place
The resuts are: 5x5 Grid
10x10 Grid
20x20 Grid
Notice that 20x20 has many zero displacements. This happens when the grid is too fine and no good features are detected in the cell.