📄 jcamcalib.java
字号:
/* * CalibratorGUI.java */package itesm.gvision.apps.calibrator;import itesm.gvision.tools.*;import itesm.gvision.image.tools.*;import itesm.gvision.image.process.*;import itesm.gvision.tools.*;import itesm.gvision.components.*;import java.awt.*;import java.awt.image.*;import java.awt.geom.*;import javax.swing.*;import java.io.*;import java.util.*;import java.text.*;//----------------------------------------------------------------------------------/** * Camera calibration utility GUI. Front-end for the OCV calibration library. * @author hugo */public class JCamCalib extends javax.swing.JFrame { /** Image list */ private Vector imagesCalib = new Vector(); /** Image dimensions */ private int fw, fh; /** OCV Bridge */ private CalibratorOCV cocv = new CalibratorOCV(); /** Distorted image */ private BufferedImage distorted; /** Undistorted image */ private BufferedImage undistorted; /** Homography matrices */ private double homoI2W[], homoW2I[]; /** Homography transform */ private HomographyTransform homoTrans; /** Zoom factor for homography point selection */ private int scaleHomoPoint = 20; /** Size for subimage area selection */ private int subImageSize = 20; /** Homography image projection opertations */ private HomographyImageProjection hip; //---------------------------------------------------------------------------------- /** Creates new form CalibratorGUI */ public JCamCalib() { initComponents(); //this.pnlIPCalibrationImage.add(this.cip); this.pnlIPCalibrationImages.add(this.cip); this.pnlIPUndistortedImage.add(this.cipUndistored); this.pnlHMImageReference.add(this.chomoip); this.pnlHMTestMode.add(this.chomoipTest); this.pnlHMImageProjection.add(this.ips); } //---------------------------------------------------------------------------------- /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents jTabbedPane1 = new javax.swing.JTabbedPane(); jPanel1 = new javax.swing.JPanel(); jSplitPane1 = new javax.swing.JSplitPane(); jPanel5 = new javax.swing.JPanel(); jPanel7 = new javax.swing.JPanel(); jPanel10 = new javax.swing.JPanel(); btnIPAddFromFile = new javax.swing.JButton(); btnIPAddFromCamera = new javax.swing.JButton(); jPanel11 = new javax.swing.JPanel(); btnIPDel = new javax.swing.JButton(); jPanel8 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); lstImagesCalib = lstImagesCalib = new JList(lstImgsCalib); jPanel9 = new javax.swing.JPanel(); btnIPCompute = new javax.swing.JButton(); jPanel6 = new javax.swing.JPanel(); jtpIntCalOptions = new javax.swing.JTabbedPane(); pnlIPCalibrationImages = new javax.swing.JPanel(); pnlIPResults = new javax.swing.JPanel(); jPanel12 = new javax.swing.JPanel(); eIPMatrix0 = new javax.swing.JTextField(); eIPMatrix1 = new javax.swing.JTextField(); eIPMatrix2 = new javax.swing.JTextField(); eIPMatrix3 = new javax.swing.JTextField(); eIPMatrix4 = new javax.swing.JTextField(); eIPMatrix5 = new javax.swing.JTextField(); eIPMatrix6 = new javax.swing.JTextField(); eIPMatrix7 = new javax.swing.JTextField(); eIPMatrix8 = new javax.swing.JTextField(); jPanel13 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); eIPDistk1 = new javax.swing.JTextField(); lblIPDistp1 = new javax.swing.JLabel(); eIPDistp1 = new javax.swing.JTextField(); lblIPDistk2 = new javax.swing.JLabel(); eIPDistk2 = new javax.swing.JTextField(); jLabel4 = new javax.swing.JLabel(); eIPDistp2 = new javax.swing.JTextField(); jPanel16 = new javax.swing.JPanel(); jPanel17 = new javax.swing.JPanel(); eIPConfigFmt = new javax.swing.JTextArea(); btnIP = new javax.swing.JButton(); jPanel14 = new javax.swing.JPanel(); pnlIPUndistortedImage = new javax.swing.JPanel(); jPanel15 = new javax.swing.JPanel(); btnIPUndistortedLoad = new javax.swing.JButton(); btnIPUndistortedSaveAs = new javax.swing.JButton(); btnIPUndist = new javax.swing.JToggleButton(); jPanel3 = new javax.swing.JPanel(); jSplitPane2 = new javax.swing.JSplitPane(); jPanel18 = new javax.swing.JPanel(); jPanel20 = new javax.swing.JPanel(); btnHMPointAddMode = new javax.swing.JToggleButton(); btnHMPointEdit = new javax.swing.JButton(); btnHMPointDel = new javax.swing.JButton(); jPanel33 = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel(); jPanel21 = new javax.swing.JPanel(); jScrollPane2 = new javax.swing.JScrollPane(); lstHMPoints = lstHMPoints = new JList(lstHomoPoints); jPanel24 = new javax.swing.JPanel(); btnHMGetMatrix = new javax.swing.JButton(); jPanel19 = new javax.swing.JPanel(); jtpHMOptions = new javax.swing.JTabbedPane(); jPanel25 = new javax.swing.JPanel(); jPanel22 = new javax.swing.JPanel(); btnHMLoadUndistorted = new javax.swing.JButton(); pnlHMImageReference = new javax.swing.JPanel(); jPanel23 = new javax.swing.JPanel(); lblHMImgCoordinates = new javax.swing.JLabel(); jPanel26 = new javax.swing.JPanel(); jPanel28 = new javax.swing.JPanel(); eHM0 = new javax.swing.JTextField(); eHM1 = new javax.swing.JTextField(); eHM2 = new javax.swing.JTextField(); eHM3 = new javax.swing.JTextField(); eHM4 = new javax.swing.JTextField(); eHM5 = new javax.swing.JTextField(); eHM6 = new javax.swing.JTextField(); eHM7 = new javax.swing.JTextField(); eHM8 = new javax.swing.JTextField(); jPanel32 = new javax.swing.JPanel(); eHM_w2i_0 = new javax.swing.JTextField(); eHM_w2i_1 = new javax.swing.JTextField(); eHM_w2i_2 = new javax.swing.JTextField(); eHM_w2i_3 = new javax.swing.JTextField(); eHM_w2i_4 = new javax.swing.JTextField(); eHM_w2i_5 = new javax.swing.JTextField(); eHM_w2i_6 = new javax.swing.JTextField(); eHM_w2i_7 = new javax.swing.JTextField(); eHM_w2i_8 = new javax.swing.JTextField(); jPanel29 = new javax.swing.JPanel(); jPanel31 = new javax.swing.JPanel(); eHMConfigFmt = new javax.swing.JTextArea(); btnHMSaveMatrix = new javax.swing.JButton(); jPanel30 = new javax.swing.JPanel(); jPanel27 = new javax.swing.JPanel(); pnlHMTestMode = new javax.swing.JPanel(); jPanel35 = new javax.swing.JPanel(); lblHMTestImagePoint = new javax.swing.JLabel(); lblHMTestWorldPoint = new javax.swing.JLabel(); jPanel34 = new javax.swing.JPanel(); pnlHMImageProjection = new javax.swing.JPanel(); jPanel37 = new javax.swing.JPanel(); jPanel36 = new javax.swing.JPanel(); jLabel6 = new javax.swing.JLabel(); cbxHMImgProjectionOrigin = new javax.swing.JComboBox(); jLabel3 = new javax.swing.JLabel(); eHMImageProjectionScale = new javax.swing.JTextField(); jLabel5 = new javax.swing.JLabel(); eHMImgProjectorX1 = new javax.swing.JTextField(); eHMImgProjectorY1 = new javax.swing.JTextField(); eHMImgProjectorX2 = new javax.swing.JTextField(); eHMImgProjectorY2 = new javax.swing.JTextField(); btnHMImageProjScaleGenerate = new javax.swing.JButton(); jPanel38 = new javax.swing.JPanel(); btnHMImageProjScaleApply1 = new javax.swing.JButton(); jPanel4 = new javax.swing.JPanel(); jPanel2 = new javax.swing.JPanel(); jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.Y_AXIS)); setTitle("JCamCalib :: A camera calibration utility"); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } }); jTabbedPane1.setPreferredSize(new java.awt.Dimension(229, 32767)); jPanel1.setLayout(new java.awt.BorderLayout()); jPanel5.setLayout(new javax.swing.BoxLayout(jPanel5, javax.swing.BoxLayout.Y_AXIS)); jPanel10.setBorder(new javax.swing.border.TitledBorder("Add image from:")); btnIPAddFromFile.setText("File..."); btnIPAddFromFile.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnIPAddFromFileActionPerformed(evt); } }); jPanel10.add(btnIPAddFromFile); btnIPAddFromCamera.setText("Camera"); btnIPAddFromCamera.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnIPAddFromCameraActionPerformed(evt); } }); jPanel10.add(btnIPAddFromCamera); jPanel7.add(jPanel10); jPanel11.setBorder(new javax.swing.border.TitledBorder("Selection:")); btnIPDel.setText("Delete"); btnIPDel.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnIPDelActionPerformed(evt); } }); jPanel11.add(btnIPDel); jPanel7.add(jPanel11); jPanel5.add(jPanel7); jPanel8.setLayout(new java.awt.BorderLayout()); lstImagesCalib.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); lstImagesCalib.addListSelectionListener(new javax.swing.event.ListSelectionListener() { public void valueChanged(javax.swing.event.ListSelectionEvent evt) { lstImagesCalibValueChanged(evt); } }); jScrollPane1.setViewportView(lstImagesCalib); jPanel8.add(jScrollPane1, java.awt.BorderLayout.CENTER); jPanel5.add(jPanel8); btnIPCompute.setForeground(new java.awt.Color(255, 0, 0)); btnIPCompute.setText("Calibrate"); btnIPCompute.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnIPComputeActionPerformed(evt); } }); jPanel9.add(btnIPCompute); jPanel5.add(jPanel9); jSplitPane1.setLeftComponent(jPanel5); jPanel6.setLayout(new java.awt.BorderLayout()); jtpIntCalOptions.setTabPlacement(javax.swing.JTabbedPane.BOTTOM); pnlIPCalibrationImages.setLayout(new java.awt.BorderLayout()); jtpIntCalOptions.addTab("Calibration images", pnlIPCalibrationImages); pnlIPResults.setLayout(new javax.swing.BoxLayout(pnlIPResults, javax.swing.BoxLayout.Y_AXIS)); jPanel12.setLayout(new java.awt.GridLayout(3, 3, 3, 3)); jPanel12.setBorder(new javax.swing.border.TitledBorder("Intrinsic parameters")); eIPMatrix0.setHorizontalAlignment(javax.swing.JTextField.RIGHT); eIPMatrix0.setToolTipText("fx"); jPanel12.add(eIPMatrix0); eIPMatrix1.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jPanel12.add(eIPMatrix1); eIPMatrix2.setHorizontalAlignment(javax.swing.JTextField.RIGHT); eIPMatrix2.setToolTipText("cx"); jPanel12.add(eIPMatrix2); eIPMatrix3.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jPanel12.add(eIPMatrix3); eIPMatrix4.setHorizontalAlignment(javax.swing.JTextField.RIGHT); eIPMatrix4.setToolTipText("fy"); jPanel12.add(eIPMatrix4); eIPMatrix5.setHorizontalAlignment(javax.swing.JTextField.RIGHT); eIPMatrix5.setToolTipText("cy"); jPanel12.add(eIPMatrix5); eIPMatrix6.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jPanel12.add(eIPMatrix6); eIPMatrix7.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jPanel12.add(eIPMatrix7); eIPMatrix8.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jPanel12.add(eIPMatrix8); pnlIPResults.add(jPanel12); jPanel13.setLayout(new java.awt.GridLayout(2, 4, 3, 3)); jPanel13.setBorder(new javax.swing.border.TitledBorder("Distortion coefficients")); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel1.setText("k1 ="); jPanel13.add(jLabel1); eIPDistk1.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jPanel13.add(eIPDistk1); lblIPDistp1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); lblIPDistp1.setText("p1 ="); jPanel13.add(lblIPDistp1); eIPDistp1.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jPanel13.add(eIPDistp1); lblIPDistk2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); lblIPDistk2.setText("k2 ="); jPanel13.add(lblIPDistk2); eIPDistk2.setHorizontalAlignment(javax.swing.JTextField.RIGHT); jPanel13.add(eIPDistk2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -