Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package formularios; import java.awt.image.WritableRaster; import bd.Conexion; import java.awt.Color; import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; import javax.imageio.ImageIO; //import javax.media.control.FrameGrabbingControl; import javax.swing.ImageIcon; import javax.swing.JFileChooser; import org.opencv.videoio.*; import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.CvType; import org.opencv.core.MatOfByte; import org.opencv.core.Scalar; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.core.Mat; import org.opencv.core.MatOfFloat; import org.opencv.core.MatOfInt; import org.opencv.core.CvType; import org.opencv.imgproc.Imgproc; import java.awt.image.BufferedImage; import java.awt.image.DataBufferByte; import javax.swing.JFrame; import java.util.Arrays; import javax.swing.JDialog; /** * * @author lonewolf */ public class FrmCamera extends javax.swing.JFrame { public static File file; //ArrayList<tutorial.Imagen> imagenes; String ruta, nombre; //tutorial.BaseDatos bd; public static ImageIcon icx; BufferedImage image; int count = 0;; /** * Creates new form FrmCamera */ public FrmCamera() { initComponents(); //System.loadLibrary(Core.NATIVE_LIBRARY_NAME); //System.setProperty( "java.library.path", "/home/lonewolf/Documentos/Proyecto/JavaCv/PROYECTO/src/formularios/" ); setLocationRelativeTo(null); this.getContentPane().setBackground(Color.DARK_GRAY); } @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jFileChooser1 = new javax.swing.JFileChooser(); jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jButton4 = new javax.swing.JButton(); jButton5 = new javax.swing.JButton(); jButton6 = new javax.swing.JButton(); jSeparator4 = new javax.swing.JSeparator(); jLabel1 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jButton7 = new javax.swing.JButton(); jButton8 = new javax.swing.JButton(); jPanel2 = new javax.swing.JPanel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setBackground(new java.awt.Color(51, 51, 51)); jButton1.setBackground(new java.awt.Color(51, 51, 51)); jButton1.setFont(new java.awt.Font("Dialog", 0, 10)); // NOI18N jButton1.setForeground(new java.awt.Color(255, 255, 255)); jButton1.setText("CARGAR IMAGEN DESDE ARCHIVO"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jButton2.setBackground(new java.awt.Color(51, 51, 51)); jButton2.setFont(new java.awt.Font("Dialog", 0, 10)); // NOI18N jButton2.setForeground(new java.awt.Color(255, 255, 255)); jButton2.setText("CARGAR DESDE LA BASE DE DATOS"); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); jButton3.setBackground(new java.awt.Color(51, 51, 51)); jButton3.setFont(new java.awt.Font("Dialog", 0, 10)); // NOI18N jButton3.setForeground(new java.awt.Color(255, 255, 255)); jButton3.setText("LIMPIAR"); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } }); jButton4.setBackground(new java.awt.Color(51, 51, 51)); jButton4.setFont(new java.awt.Font("Dialog", 0, 10)); // NOI18N jButton4.setForeground(new java.awt.Color(255, 255, 255)); jButton4.setText("INICIAR STREAMING"); jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton4ActionPerformed(evt); } }); jButton5.setBackground(new java.awt.Color(51, 51, 51)); jButton5.setFont(new java.awt.Font("Dialog", 0, 10)); // NOI18N jButton5.setForeground(new java.awt.Color(255, 255, 255)); jButton5.setText("CAPTURAR IMAGEN"); jButton5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton5ActionPerformed(evt); } }); jButton6.setBackground(new java.awt.Color(51, 51, 51)); jButton6.setFont(new java.awt.Font("Dialog", 0, 10)); // NOI18N jButton6.setForeground(new java.awt.Color(255, 255, 255)); jButton6.setText("LIMPIAR"); jLabel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); jTextField1.setBackground(new java.awt.Color(0, 0, 51)); jTextField1.setForeground(new java.awt.Color(255, 255, 255)); jButton7.setBackground(new java.awt.Color(51, 51, 51)); jButton7.setFont(new java.awt.Font("Dialog", 0, 10)); // NOI18N jButton7.setForeground(new java.awt.Color(255, 255, 255)); jButton7.setText("SALIR"); jButton7.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton7ActionPerformed(evt); } }); jButton8.setBackground(new java.awt.Color(51, 51, 51)); jButton8.setFont(new java.awt.Font("Dialog", 0, 10)); // NOI18N jButton8.setForeground(new java.awt.Color(255, 255, 255)); jButton8.setText("INICIAR COMPARACION DE IMAGENES"); jButton8.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton8ActionPerformed(evt); } }); jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup(jPanel2Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 0, Short.MAX_VALUE)); jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE)); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup( javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup().addContainerGap().addGroup(layout .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jSeparator4, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jTextField1, javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup().addGroup(layout .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jButton6, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButton5, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButton4, javax.swing.GroupLayout.DEFAULT_SIZE, 290, Short.MAX_VALUE) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(20, 20, 20) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButton3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButton2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 292, Short.MAX_VALUE)) .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 292, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(layout.createSequentialGroup().addComponent(jButton8) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButton7, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap())); layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup().addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 273, Short.MAX_VALUE) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(22, 22, 22) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(11, 11, 11) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jButton6, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(11, 11, 11) .addComponent(jSeparator4, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jButton7, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButton8)) .addContainerGap())); pack(); }// </editor-fold>//GEN-END:initComponents private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed final JFileChooser elegirImagen = new JFileChooser(); elegirImagen.setMultiSelectionEnabled(false); int o = elegirImagen.showOpenDialog(this); if (o == JFileChooser.APPROVE_OPTION) { ruta = elegirImagen.getSelectedFile().getAbsolutePath(); nombre = elegirImagen.getSelectedFile().getName(); jTextField1.setText(ruta); Image preview = Toolkit.getDefaultToolkit().getImage(ruta); if (preview != null) { jLabel1.setText(""); ImageIcon icon = new ImageIcon( preview.getScaledInstance(jLabel1.getWidth(), jLabel1.getHeight(), Image.SCALE_DEFAULT)); jLabel1.setIcon(icon); } } guardarImagen(jTextField1.getText()); }//GEN-LAST:event_jButton1ActionPerformed public boolean guardarImagen(String ruta) { String enlace = "insert into javacv.jimages(images) values(?)"; FileInputStream fis = null; PreparedStatement st1 = null; Conexion c = new Conexion(); Connection con = null; try { con = c.getConnection(); File file = new File(ruta); fis = new FileInputStream(file); st1 = con.prepareStatement(enlace); st1.setBinaryStream(1, fis, (int) file.length()); System.out.println("Antes del query, " + enlace); st1.execute(); System.out.println("Despues " + enlace); return true; } catch (Exception ex) { } finally { try { st1.close(); fis.close(); } catch (Exception ex) { //Logger.getLogger(BaseDatos.class.getName()).log(Level.SEVERE, null, ex); } } return false; } private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed }//GEN-LAST:event_jButton5ActionPerformed private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed // TODO add your handling code here: FrmReadImage img = null; img = new FrmReadImage(); img.setVisible(true); }//GEN-LAST:event_jButton2ActionPerformed private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed // TODO add your handling code here: jLabel1.setIcon(null); }//GEN-LAST:event_jButton3ActionPerformed private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton7ActionPerformed // TODO add your handling code here: this.dispose(); }//GEN-LAST:event_jButton7ActionPerformed private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton8ActionPerformed }//GEN-LAST:event_jButton8ActionPerformed @Override public void paint(Graphics g) { g.drawImage(image, 0, 0, this); } private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed // TODO add your handling code here: System.out.println("Hello, OpenCV"); // Load the native library. System.out.println(System.getProperty("java.library.path")); System.loadLibrary("opencv-300"); VideoCapture camera = new VideoCapture(0); camera.open(0); //Useless if (!camera.isOpened()) { System.out.println("Camera Error"); } else { System.out.println("Camera OK?"); } Mat frame = new Mat(); //camera.grab(); //System.out.println("Frame Grabbed"); //camera.retrieve(frame); //System.out.println("Frame Decoded"); camera.read(frame); System.out.println("Frame Obtained"); /* No difference camera.release(); */ System.out.println("Captured Frame Width " + frame.width()); Imgcodecs.imwrite("camera.jpg", frame); System.out.println("OK"); }//GEN-LAST:event_jButton4ActionPerformed //Show image on window public FrmCamera(BufferedImage img) { image = img; } //Show image on window public void window(BufferedImage img, String text, int x, int y) { JFrame frame0 = new JFrame(); frame0.getContentPane().add(new FrmCamera(img)); frame0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame0.setTitle(text); frame0.setSize(img.getWidth(), img.getHeight() + 30); frame0.setLocation(x, y); frame0.setVisible(true); } //Load an image public BufferedImage loadImage(String file) { BufferedImage img; try { File input = new File(file); img = ImageIO.read(input); return img; } catch (Exception e) { System.out.println("erro"); } return null; } //Save an image public void saveImage(BufferedImage img) { try { File outputfile = new File("Images/new.png"); ImageIO.write(img, "png", outputfile); } catch (Exception e) { System.out.println("error"); } } //Grayscale filter public BufferedImage grayscale(BufferedImage img) { for (int i = 0; i < img.getHeight(); i++) { for (int j = 0; j < img.getWidth(); j++) { Color c = new Color(img.getRGB(j, i)); int red = (int) (c.getRed() * 0.299); int green = (int) (c.getGreen() * 0.587); int blue = (int) (c.getBlue() * 0.114); Color newColor = new Color(red + green + blue, red + green + blue, red + green + blue); img.setRGB(j, i, newColor.getRGB()); } } return img; } //***************************************************** public BufferedImage MatToBufferedImage(Mat frame) { //Mat() to BufferedImage int type = 0; if (frame.channels() == 1) { type = BufferedImage.TYPE_BYTE_GRAY; } else if (frame.channels() == 3) { type = BufferedImage.TYPE_3BYTE_BGR; } BufferedImage image = new BufferedImage(frame.width(), frame.height(), type); WritableRaster raster = image.getRaster(); DataBufferByte dataBuffer = (DataBufferByte) raster.getDataBuffer(); byte[] data = dataBuffer.getData(); frame.get(0, 0, data); return image; } public static void main(String args[]) { /* Set the Nimbus look and feel */ } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JButton jButton4; private javax.swing.JButton jButton5; private javax.swing.JButton jButton6; private javax.swing.JButton jButton7; private javax.swing.JButton jButton8; private javax.swing.JFileChooser jFileChooser1; public static javax.swing.JLabel jLabel1; private javax.swing.JPanel jPanel2; private javax.swing.JSeparator jSeparator4; private javax.swing.JTextField jTextField1; // End of variables declaration//GEN-END:variables }