001/* 002 * Copyright (C) Photon Vision. 003 * 004 * This program is free software: you can redistribute it and/or modify 005 * it under the terms of the GNU General Public License as published by 006 * the Free Software Foundation, either version 3 of the License, or 007 * (at your option) any later version. 008 * 009 * This program is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 012 * GNU General Public License for more details. 013 * 014 * You should have received a copy of the GNU General Public License 015 * along with this program. If not, see <https://www.gnu.org/licenses/>. 016 */ 017 018package org.photonvision.vision.pipe.impl; 019 020import org.opencv.core.Mat; 021import org.opencv.core.Size; 022import org.opencv.imgproc.Imgproc; 023import org.photonvision.vision.pipe.MutatingPipe; 024 025/** Represents a pipeline that blurs the image. */ 026public class BlurPipe extends MutatingPipe<Mat, BlurPipe.BlurParams> { 027 /** 028 * Processes this pipe. 029 * 030 * @param in Input for pipe processing. 031 * @return The processed frame. 032 */ 033 @Override 034 protected Void process(Mat in) { 035 Imgproc.blur(in, in, params.getBlurSize()); 036 return null; 037 } 038 039 public static class BlurParams { 040 // Default BlurImagePrams with zero blur. 041 public static BlurParams DEFAULT = new BlurParams(0); 042 043 // Member to store the blur size. 044 private final int m_blurSize; 045 046 /** 047 * Constructs a new BlurImageParams. 048 * 049 * @param blurSize The blur size. 050 */ 051 public BlurParams(int blurSize) { 052 m_blurSize = blurSize; 053 } 054 055 /** 056 * Returns the blur size. 057 * 058 * @return The blur size. 059 */ 060 public Size getBlurSize() { 061 return new Size(m_blurSize, m_blurSize); 062 } 063 } 064}