pub fn warp<P>(
    image: &Image<P>,
    projection: &Projection,
    interpolation: Interpolation,
    default: P,
) -> Image<P>
where
    P: Pixel + Send + Sync,
    <P as Pixel>::Subpixel: Send + Sync,
    <P as Pixel>::Subpixel: Into<f32> + Clamp<f32>,
{
    let (width, height) = image.dimensions();
    let mut out = Image::new(width, height);
    warp_into(image, projection, interpolation, default, &mut out);
    out
}
Applies a projective transformation to an image.

The returned image has the same dimensions as `image`. Output pixels
whose pre-image lies outside the input image are set to `default`.

The provided projection defines a mapping from locations in the input image to their
corresponding location in the output image.
src/geometric_transformations.rs