All Downloads are FREE. Search and download functionalities are using the official Maven repository.

boofcv.app.BaseStandardInputApp Maven / Gradle / Ivy

Go to download

BoofCV is an open source Java library for real-time computer vision and robotics applications.

There is a newer version: 1.1.7
Show newest version
/*
 * Copyright (c) 2011-2016, Peter Abeles. All Rights Reserved.
 *
 * This file is part of BoofCV (http://boofcv.org).
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package boofcv.app;

import com.github.sarxos.webcam.Webcam;

/**
 * @author Peter Abeles
 */
public class BaseStandardInputApp {

	protected InputType inputType = InputType.WEBCAM;

	protected int cameraId=0;
	protected String cameraName = null;
	protected int desiredWidth=-1,desiredHeight=-1;

	protected String filePath;

	protected String flagName;
	protected String parameters;

	protected void printInputHelp() {
		System.out.println("Camera Input:  (default)");
		System.out.println();
		System.out.println("  --Camera=              Opens the specified camera using WebcamCapture ID");
		System.out.println("                                     or a device string.");
		System.out.println("                                     DEFAULT: Whatever WebcamCapture opens");
		System.out.println("  --Resolution=:      Specifies the image resolution.");
		System.out.println("                                     DEFAULT: Who knows or intrinsic, if specified");
		System.out.println();
		System.out.println("Image Input:");
		System.out.println();
		System.out.println("  --ImageFile=                 Path to image file");
		System.out.println();
		System.out.println("Video Input:");
		System.out.println();
		System.out.println("  --VideoFile=                 Path to video file");
	}

	protected boolean checkCameraFlag( String argument ) {
		splitFlag(argument);
		if( flagName.compareToIgnoreCase("Camera") == 0 ) {
			inputType = InputType.WEBCAM;
			try {
				cameraId = Integer.parseInt(parameters);
			} catch( NumberFormatException e ) {
				cameraId = -1;
				cameraName = parameters;
			}
			return true;
		} else if( flagName.compareToIgnoreCase("ImageFile") == 0 ) {
			inputType = InputType.IMAGE;
			filePath = parameters;
			return true;
		} else if( flagName.compareToIgnoreCase("videoFile") == 0 ) {
			inputType = InputType.VIDEO;
			filePath = parameters;
			return true;
		} else if( flagName.compareToIgnoreCase("Resolution") == 0 ) {
			String words[] = parameters.split(":");
			if( words.length != 2 )throw new RuntimeException("Expected two for width and height");
			desiredWidth = Integer.parseInt(words[0]);
			desiredHeight = Integer.parseInt(words[1]);
			return true;
		} else {
			return false;
		}
	}

	protected Webcam openSelectedCamera() {
		Webcam webcam = cameraId >= 0 ? Webcam.getWebcams().get(cameraId) : Webcam.getWebcamByName(cameraName);

		if( webcam == null ) {
			if( cameraId >= 0 ) {
				System.err.println("Can't find camera with ID "+cameraId);
			} else {
				System.err.println("Can't find camera with name "+cameraName);
			}
			System.exit(-1);
		}
		return webcam;
	}

	protected String getCameraDeviceString() {
		if( cameraId >= 0 )
			return cameraId+"";
		else
			return cameraName;
	}

	protected void splitFlag( String word ) {
		int indexEquals = 2;
		for(; indexEquals < word.length(); indexEquals++ ) {
			if( word.charAt(indexEquals)=='=') {
				break;
			}
		}
		if(indexEquals == word.length() )
			throw new RuntimeException("Expected = inside of flag");

		flagName = word.substring(2,indexEquals);
		parameters = word.substring(indexEquals+1,word.length());
	}

	enum InputType {
		WEBCAM,
		IMAGE,
		VIDEO
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy