Java图片识别技术原理

<span style="font-family:Microsoft YaHei;font-size:14px;">package ImageIO;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
/**
 * 图形识别技术
 * @author c
 * 时间:2015-4-6
 * */
public class Image {
    public static void main(String[] args) throws IOException {

        BufferedImage bi = (BufferedImage) ImageIO.read(new File("C:/Users/e530c/Desktop/a.png"));

        //获取图像的宽度和高度
        int width = bi.getWidth();
        int height = bi.getHeight();

        //扫描图片
        for(int i=0;i<height;i++){
            for(int j=0;j<width;j++){//行扫描
                int dip = bi.getRGB(j, i);
                if(dip == -1) System.out.print(" ");
                else          System.out.print("0");
            }
            System.out.println();//换行
        }

    }

}</span>

<span style="font-family:Microsoft YaHei;font-size:14px;">                                 000                        
                                0000                        
                         0000   0000     000                
                      0000000   0000     0000               
                   0000000000    000     00000              
               0000000000000     000     00000              
          0000000000000000       000      00000             
    0000000000000000000          000       00000            
    000000000000000              000       00000            
   00000000000 0000              000        00000           
    0000       0000              000         0000           
               0000              0000        00000          
               0000              0000         0000          
               0000              0000         00000         
               0000              0000          0000         
               0000              0000           000         
               0000              0000           000         
               0000              0000                       
  0000000000000000000000000000000000000000000000000000000   
 00000000000000000000000000000000000000000000000000000000   
 00000000000000000000000000000000000000000000000000000000   
  000000000000000000000000000000000000000000000000000000    
               0000               0000                      
               0000               0000          000         
               0000               0000          000         
               0000               0000         0000         
               0000               0000         0000         
               0000               0000        00000         
               0000         00     000        0000          
               0000       00000    0000      00000          
               0000     0000000    0000     00000           
               0000  0000000000    0000     0000            
               00000000000000      0000    00000            
               000000000000         0000   0000             
             000000000000           0000  00000             
          000000000000              0000 00000              
       000000000000                 000000000               
   0000000000000000                  00000000               
  000000000000 0000                  0000000                
  000000000    0000                  000000                 
  00000        0000                  000000                 
               0000                 000000           0000   
               0000                00000000          0000   
               0000               0000000000         0000   
               0000             000000  0000         0000   
               0000            000000   00000        0000   
               0000           000000     0000        0000   
               0000          000000      00000       0000   
               0000        0000000        00000      0000   
               0000       000000          000000     0000   
     0         0000     0000000            000000    0000   
    00000       000    0000000              000000  0000    
    00000000   0000    00000                 000000 0000    
    000000000000000    000                    0000000000    
     00000000000000                            00000000     
        0000000000                              0000000     
                                                  000       
                                                            
                                                            </span>


ImageComparerUI——基于Java语言实现的相似图像识别,基于直方图比较算法。 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.MediaTracker; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JPanel; public class ImageComparerUI extends JComponent implements ActionListener { /** * */ private static final long serialVersionUID = 1L; private JButton browseBtn; private JButton histogramBtn; private JButton compareBtn; private Dimension mySize; // image operator private MediaTracker tracker; private BufferedImage sourceImage; private BufferedImage candidateImage; private double simility; // command constants public final static String BROWSE_CMD = "Browse..."; public final static String HISTOGRAM_CMD = "Histogram Bins"; public final static String COMPARE_CMD = "Compare Result"; public ImageComparerUI() { JPanel btnPanel = new JPanel(); btnPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); browseBtn = new JButton("Browse..."); histogramBtn = new JButton("Histogram Bins"); compareBtn = new JButton("Compare Result"); // buttons btnPanel.add(browseBtn); btnPanel.add(histogramBtn); btnPanel.add(compareBtn); // setup listener... browseBtn.addActionListener(this); histogramBtn.addActionListener(this); compareBtn.addActionListener(this); mySize = new Dimension(620, 500); JFrame demoUI = new JFrame("Similiar Image Finder"); demoUI.getContentPane().setLayout(new BorderLayout()); demoUI.getContentPane().add(this, BorderLayout.CENTER); demoUI.getContentPane().add(btnPanel, BorderLayout.SOUTH); demoUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); demoUI.pack(); demoUI.setVisible(true); } public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; if(sourceImage != null) { Image scaledImage = sourceImage.getScaledInstance(300, 300, Image.SCALE_FAST); g2.drawImage(scaledImage, 0, 0, 300, 300, null); } if(candidateImage != null) { Image scaledImage = candidateImage.getScaledInstance(300, 330, Image.SCALE_FAST); g2.drawImage(scaledImage, 310, 0, 300, 300, null); } // display compare result info here Font myFont = new Font("Serif", Font.BOLD, 16); g2.setFont(myFont); g2.setPaint(Color.RED); g2.drawString("The degree of similarity : " + simility, 50, 350); } public void actionPerformed(ActionEvent e) { if(BROWSE_CMD.equals(e.getActionCommand())) { JFileChooser chooser = new JFileChooser(); chooser.showOpenDialog(null); File f = chooser.getSelectedFile(); BufferedImage bImage = null; if(f == null) return; try { bImage = ImageIO.read(f); } catch (IOException e1) { e1.printStackTrace(); } tracker = new MediaTracker(this); tracker.addImage(bImage, 1); // blocked 10 seconds to load the image data try { if (!tracker.waitForID(1, 10000)) { System.out.println("Load error."); System.exit(1); }// end if } catch (InterruptedException ine) { ine.printStackTrace(); System.exit(1); } // end catch if(sourceImage == null) { sourceImage = bImage; }else if(candidateImage == null) { candidateImage = bImage; } else { sourceImage = null; candidateImage = null; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值