Skip to content

include/cvw/algorithms/filter.hpp

Image smoothing filters. More...

Namespaces

Name
cvw

Detailed Description

Image smoothing filters.

Author: Charliechen114514

Version: 1.0.0

Since: 1.0.0

Date: 2026-05-15

Provides Gaussian blur and median blur with expected-based error handling. Both operate in-place when supported by the underlying OpenCV function.

Source code

cpp

#pragma once
#include "detail.hpp"
#include <opencv2/imgproc.hpp>

namespace cvw {

template <is_pixel_format F>
[[nodiscard]] inline expected<Image<F>, AlgorithmError>
gaussian_blur(Image<F> img, int kernel_size, double sigma = 0.0) {
    auto ec = detail::check_non_empty(img);
    if (!ec) {
        return unexpected(ec.error());
    }
    ec = detail::require_odd(kernel_size);
    if (!ec) {
        return unexpected(ec.error());
    }

    cv::GaussianBlur(img.mat(), img.mat(), cv::Size(kernel_size, kernel_size),
                     sigma);
    return img;
}

template <is_pixel_format F>
    requires(F::channels == 1)
[[nodiscard]] inline expected<Image<F>, AlgorithmError>
median_blur(Image<F> img, int kernel_size) {
    auto ec = detail::check_non_empty(img);
    if (!ec) {
        return unexpected(ec.error());
    }
    ec = detail::require_odd(kernel_size);
    if (!ec) {
        return unexpected(ec.error());
    }

    cv::medianBlur(img.mat(), img.mat(), kernel_size);
    return img;
}

} // namespace cvw

Updated on 2026-05-17 at 13:22:38 +0000

Built with VitePress