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.frame.FrameDivisor; 024import org.photonvision.vision.pipe.MutatingPipe; 025 026/** Pipe that resizes an image to a given resolution */ 027public class ResizeImagePipe extends MutatingPipe<Mat, ResizeImagePipe.ResizeImageParams> { 028 /** 029 * Process this pipe 030 * 031 * @param in {@link Mat} to be resized 032 */ 033 @Override 034 protected Void process(Mat in) { 035 int width = in.cols() / params.getDivisor().value; 036 int height = in.rows() / params.getDivisor().value; 037 Imgproc.resize(in, in, new Size(width, height)); 038 039 return null; 040 } 041 042 public static class ResizeImageParams { 043 private final FrameDivisor divisor; 044 045 public ResizeImageParams(FrameDivisor divisor) { 046 this.divisor = divisor; 047 } 048 049 public FrameDivisor getDivisor() { 050 return divisor; 051 } 052 } 053}