[][src]Function simplecv::filter::filter

pub fn filter<S, K>(
    src: &ArrayBase<S, Ix2>,
    kernel: &ArrayBase<K, Ix2>,
    border: BorderType
) -> Array<f64, Ix2> where
    S: Data<Elem = f64>,
    K: Data<Elem = f64>, 

Apply a linear filter to the source image.

The method of dealing with border situation is selected by border. By setting border=Reflect, you will get the default result of OpenCV.

Example

 use simplecv::filter::*;
 use ndarray::arr2;
 let A = arr2(&[[0.0, 0.0, 0.0, 0.0, 0.0],
                [0.0, 1.0, 1.0, 1.0, 0.0],
                [0.0, 1.0, 1.0, 1.0, 0.0],
                [0.0, 1.0, 1.0, 1.0, 0.0],
                [0.0, 0.0, 0.0, 0.0, 0.0]]);
 let kernel = arr2(&[[1.0, 2.0, 1.0],
                     [2.0, 4.0, 2.0],
                     [1.0, 2.0, 1.0]]);
 let target = arr2(&[[1.0, 3.0, 4.0, 3.0, 1.0],
                     [3.0, 9.0, 12.0, 9.0, 3.0],
                     [4.0, 12.0, 16.0, 12.0, 4.0],
                     [3.0, 9.0, 12.0, 9.0, 3.0],
                     [1.0, 3.0, 4.0, 3.0, 1.0]]);
 let output = filter(&A, &kernel, BorderType::Constant(0.0));
 assert_eq!(target, output);