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

boofcv.app.calib.AssistedCalibrationGui 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-2015, 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.calib;

import boofcv.gui.image.ImagePanel;

import javax.swing.*;
import javax.swing.border.BevelBorder;
import java.awt.*;
import java.awt.image.BufferedImage;

/**
 * @author Peter Abeles
 */
public class AssistedCalibrationGui extends JPanel {
	JLabel messageLabel;
	ImagePanel imagePanel;

	BufferedImage workImage;
	CalibrationInfoPanel infoPanel;

	public AssistedCalibrationGui( Dimension dimension ) {
		this(dimension.width,dimension.height);
	}

	public AssistedCalibrationGui( int imageWidth , int imageHeight ) {
//		super(new GridLayout(2,1));
		super(new BorderLayout());

//		JLabel panelMessage = new JLabel();
//		panelMessage.setBorder(new BevelBorder(BevelBorder.LOWERED));

		messageLabel = new JLabel();
		messageLabel.setBorder(new BevelBorder(BevelBorder.LOWERED));
		messageLabel.setFont(new Font("Serif", Font.BOLD, 22));
		messageLabel.setText("Initial text string to fill it up");
		messageLabel.setMinimumSize(new Dimension(imageWidth,30));
		messageLabel.setPreferredSize(new Dimension(imageWidth, 30));

		infoPanel = new CalibrationInfoPanel();

		imagePanel = new ImagePanel(imageWidth,imageHeight);

		add(messageLabel,BorderLayout.NORTH);
		add(imagePanel,BorderLayout.CENTER);
		add(infoPanel,BorderLayout.EAST);


		workImage = new BufferedImage(imageWidth,imageHeight,BufferedImage.TYPE_INT_BGR);
	}

	public void setMessage( final String message ) {
		if( message == null )
			return;

		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				messageLabel.setText(message);
				messageLabel.repaint();
//				messageLabel.invalidate();
			}
		});
	}

	public CalibrationInfoPanel getInfoPanel() {
		return infoPanel;
	}

	public synchronized void setImage( BufferedImage image ) {
		workImage.createGraphics().drawImage(image,0,0,image.getWidth(),image.getHeight(),null);
		imagePanel.setBufferedImage(workImage);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy