⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snpframe.java

📁 SNP算法: 基于背景缩减和阴影检测的统计方法,适用于室内检测.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
 					btn.setText("不使用滑杆条调整参数");
 				}
 				else
 				{
 					frame.jSlider.setEnabled(false);
     				frame.jSlider2.setEnabled(false);
 					frame.useslider = false;
 					btn.setText("使用滑杆条调整参数");
 				}
 			}
 		}
 	}
    /**/
    static class CbItemListener implements ItemListener
    {
    	SNPFrame frame;
    	public CbItemListener(SNPFrame frame){
 	        this.frame=frame;
 		}
 		
    	public void itemStateChanged(ItemEvent e)
		{
			Checkbox cb = (Checkbox)e.getItemSelectable();
			if(cb.getLabel().equals("选择视频"))
			{
				frame.tipslabel.setText("            现在对视频图像进行SNP处理");
				frame.selectButton.setEnabled(true);
				frame.startButton.setEnabled(false);
				frame.saveButton.setEnabled(false);
				frame.totalalphaButton.setEnabled(false);
     			frame.binaryButton.setEnabled(false);
			}
			else
			{
				frame.tipslabel.setText("            现在对摄像头图像进行SNP处理");
				frame.selectButton.setEnabled(false);
				frame.startButton.setEnabled(true);
				frame.saveButton.setEnabled(true);
				frame.totalalphaButton.setEnabled(true);
     			frame.binaryButton.setEnabled(true);
			}
		}
	}
    
    /*选择按钮响应事件*/
    static class SelectButtonListener implements ActionListener{
    	SNPFrame frame;
    	public SelectButtonListener(SNPFrame frame){
 	        this.frame=frame;
 		}
 		public void actionPerformed(ActionEvent e){
 			if(frame.selectButton.isEnabled())
 			{		
		    	JFileChooser chooser = new JFileChooser();
			    MyFileFilter filter = new MyFileFilter();
			    
			    filter.addExtension(".avi");
			    filter.setDescription("*.avi");
			    
			    chooser.setFileFilter(filter);
			    
			    int returnVal = chooser.showOpenDialog(frame);
			    
			    if(returnVal == JFileChooser.APPROVE_OPTION) {
			       /*选择好视频后,设置可以处理*/
			       frame.startButton.setEnabled(true);
			       frame.saveButton.setEnabled(true);
		//	       frame.paintButton.setEnabled(true);
				   frame.totalalphaButton.setEnabled(true);
			       frame.binaryButton.setEnabled(true);
			       String p=chooser.getSelectedFile().getPath();
			       frame.setPath(p);
			       System.out.println("You chose to open this file: " + p);
		    	}
	    	}
	    }
    }
    
   
  
	/*开始按钮响应事件*/
    static class StartButtonListener implements ActionListener{
    	SNPFrame frame;
		public StartButtonListener(SNPFrame frame){
			this.frame=frame;
		}
		public void actionPerformed(ActionEvent e){
			JButton btn=(JButton)e.getSource();
			/*如果已经选择了视频,则可以进行处理*/
			if(btn.isEnabled())
			{
				/*如果当前为SNP处理,则点击执行处理*/
				if(btn.getText().equals("SNP处理")){
					frame.setStart(true);
					frame.selectCb.setEnabled(false);
					frame.vedioCb.setEnabled(false);
					frame.saveButton.setEnabled(false);
   //  				frame.paintButton.setEnabled(false);
   					frame.totalalphaButton.setEnabled(false);
     				frame.binaryButton.setEnabled(false);
     				frame.pengzhangButton.setEnabled(false);
     				frame.jSlider.setEnabled(false);
     				frame.jSlider2.setEnabled(false);
     				frame.addButton.setEnabled(false);
     				frame.recLabel.setChange(false);
     				frame.useSliderButton.setEnabled(false);
     				frame.delButton.setEnabled(false);
     				
     				try{
			    	 	totalpic = Integer.parseInt(frame.startframe.getText());	
						}catch(NumberFormatException ee)
						{
							totalpic = 1;
						}
					frame.startframe.setEditable(false);
					frame.skipnum.setEditable(false);
     			//	totalpic = frame.startframenum;
					SNP.sampleImageNum = 0;
					btn.setText("重新开始");
				}
				else{
					frame.saveButton.setEnabled(true);
					frame.selectCb.setEnabled(true);
					frame.vedioCb.setEnabled(true);
    // 				frame.paintButton.setEnabled(true);
    				frame.totalalphaButton.setEnabled(true);
     				frame.binaryButton.setEnabled(true);
     				frame.jSlider.setEnabled(true);
     				frame.jSlider2.setEnabled(true);
     				frame.addButton.setEnabled(true);
     				frame.recLabel.setChange(true);
     				frame.useSliderButton.setEnabled(true);
     				frame.delButton.setEnabled(true);
     				frame.startframe.setEditable(true);
     				frame.skipnum.setEditable(true);
     				if(frame.binaryButton.getText().equals("原始图"))
     				{
     					frame.pengzhangButton.enable(true);
     				}
					btn.setText("SNP处理");
					frame.setStart(false);
					/*如果可以处理,设置是否需要保存图像*/	
				}
			}
		}
    }
    
    static class BinaryButtonListener implements ActionListener
    {
    	SNPFrame frame = new SNPFrame();
    	public BinaryButtonListener(SNPFrame frame)
    	{
    		this.frame = frame;
    	}
    	public void actionPerformed(ActionEvent event)
    	{
    		JButton btn=(JButton)event.getSource();
    		/*如果当前不在处理中,则可以选择保存与否*/
    	
    		if(btn.isEnabled())
    		{
    				if(btn.getText().equals("二值化图"))
	    		{
	    			frame.setBinaryvalue(true);
	    			frame.pengzhangButton.setEnabled(true);
	    			btn.setText("原始图  ");	
	    		}
	    		else
	    		{   
	    			btn.setText("二值化图");
	    			frame.setBinaryvalue(false);
	    			frame.pengzhangButton.setEnabled(false);
	    		}	
    		}	
    	}
    }
    
    /*二值化膨胀按钮响应事件*/
    static class PengzhangButtonListener implements ActionListener
    {
    	SNPFrame frame = new SNPFrame();
    	public PengzhangButtonListener(SNPFrame frame)
    	{
    		this.frame = frame;
    	}
    	
    	public void actionPerformed(ActionEvent event)
    	{
    		JButton btn=(JButton)event.getSource();
    		/*如果当前不在处理中,则可以选择保存与否*/
    	
    		if(btn.isEnabled())
    		{
    				if(btn.getText().equals("二值膨胀"))
	    		{
	    			frame.setPengzhang(true);
	    			btn.setText("不膨胀  ");
	    		}
	    		else
	    		{   
	    			btn.setText("二值膨胀");
	    			frame.setPengzhang(false);
	    		}	
    		}	
    	}
    }
    
    /*保存按钮响应事件*/
    static class SaveButtonListener implements ActionListener
    {
    	SNPFrame frame = new SNPFrame();
    	public SaveButtonListener(SNPFrame frame)
    	{
    		this.frame = frame;
    	}
    	
    	public void actionPerformed(ActionEvent event)
    	{
    		JButton btn=(JButton)event.getSource();
    		/*如果当前不在处理中,则可以选择保存与否*/
    	
    		if(btn.isEnabled())
    		{
    				if(btn.getText().equals("保存图像"))
	    		{
	    			frame.setSaved(true);
	    			btn.setText("不保存  ");
	    		}
	    		else
	    		{   
	    			btn.setText("保存图像");
	    			frame.setSaved(false);
	    		}	
    		}	
    	}
    }
    
    /*响应是否获取光线强度总和*/
    static class TotalalphaButtonListener implements ActionListener
    {
    	SNPFrame frame = new SNPFrame();
    	public TotalalphaButtonListener(SNPFrame frame)
    	{
    		this.frame = frame;
    	}
    	
    	public void actionPerformed(ActionEvent event)
    	{
    		JButton btn = (JButton)event.getSource();
    		if(btn.isEnabled())
    		{
    			if(btn.getText().equals("光强度和"))
	    		{
	    			frame.setTotalalpha(true);
	    			btn.setText("不须求  ");
	    		}
	    		else
	    		{
	    			btn.setText("光强度和");
	    			frame.setTotalalpha(false);
	    		}
    		}
    	}
    }
    
    /*描述分布曲线响应事件*/
 /*   static class PaintButtonListener implements ActionListener
    {
    	SNPFrame frame = new SNPFrame();
    	public PaintButtonListener(SNPFrame frame)
    	{
    		this.frame = frame;
    	}
    	
    	public void actionPerformed(ActionEvent event)
    	{
    		JButton btn = (JButton)event.getSource();
    		if(btn.isEnabled())
    		{
    			if(btn.getText().equals("分布曲线"))
	    		{
	    			frame.setPic(true);
	    			btn.setText("不须画");
	    		}
	    		else
	    		{
	    			btn.setText("分布曲线");
	    			frame.setPic(false);
	    		}
    		}
    	}
    }*/
    
    public static void main(String args[]){
    	JFrame.setDefaultLookAndFeelDecorated(true);
    	JDialog.setDefaultLookAndFeelDecorated(true);
    	
    	SNPFrame frame=new SNPFrame();
    	frame.setResizable(false);
     	frame.setVisible(true);
     	frame.startButton.setEnabled(false);
     	frame.saveButton.setEnabled(false);
//     	frame.paintButton.setEnabled(false);
		frame.totalalphaButton.setEnabled(false);
     	frame.binaryButton.setEnabled(false);
     	frame.pengzhangButton.setEnabled(false);
     	frame.jSlider.setEnabled(false);
     	frame.jSlider2.setEnabled(false);
//     	frame.addButton.setEnabled(false);
//     	frame.delButton.setEnabled(false);
     	
     	BufferedImage inImage;
    	Image[] src = new Image[2];
    	File file;
    			
 		file = new File("images/orient.gif");/*读入初始化图象*/
    	try{
			src[0]= javax.imageio.ImageIO.read(file);
		}catch(IOException ie){} 
		inImage=new BufferedImage(320,240,BufferedImage.TYPE_INT_RGB);
		inImage.getGraphics().drawImage(src[0],0,0,320,240,null);
    	ImagePanel imgpanel = null;
    	try{
    	 	/*初始化视频*/
    		imgpanel = new ImagePanel(inImage);
    		imgpanel.setBounds(new Rectangle(0,0,320,240));
    		frame.orientpanel.add(imgpanel);
    		imgpanel.repaint(); 
    		frame.setRecIcon(inImage);
    		
    		/*增加开始按钮和选择按钮响应*/
    		frame.selectCb.addItemListener(new CbItemListener(frame));
    		frame.vedioCb.addItemListener(new CbItemListener(frame));
    		frame.jSlider.addChangeListener(new SliderListener(frame));
    		frame.jSlider2.addChangeListener(new SliderListener2(frame));
        	frame.startButton.addActionListener(new StartButtonListener(frame));
        	frame.selectButton.addActionListener(new SelectButtonListener(frame));
      		frame.saveButton.addActionListener(new SaveButtonListener(frame));
 //   		frame.paintButton.addActionListener(new PaintButtonListener(frame));
 			frame.useSliderButton.addActionListener(new SliderButtonListener(frame));
 			frame.totalalphaButton.addActionListener(new TotalalphaButtonListener(frame));
      		frame.binaryButton.addActionListener(new BinaryButtonListener(frame));
      		frame.pengzhangButton.addActionListener(new PengzhangButtonListener(frame));
      		
    	 	while(true){
	    	 	while(!frame.getStart()){
	    			Thread.sleep(20); 
	    			imgpanel.setBounds(new Rectangle(0,0,320,240));
	    		 }
    			

    			SNP snp = new SNP(inImage);
    	  		if(frame.recLabel.getListSize() != 0)
    	  		{
    	  			Rectangle rec = frame.recLabel.getRecAt(0);
    	  			snp.setDetectArea(rec);
    	  		}
    	  		else
    	  		{
    	  			snp.setDefaultArea();
    	  		}
    	  		
    	  		if(frame.useslider)
    	  		{
    	  			snp.setUseSlider(true);
    	  			snp.setSlidervalue(frame.slidervalue);
    	  			snp.setSlidervalue2(frame.slidervalue2);
    	  		}
    	  		else
    	  		{
    	  			snp.setUseSlider(false);
    	  		}
    	  		
    	  		
    	  		if(frame.totalalpha)
    	  		{
    	  			snp.setTotalalpha(true);
    	  		}
    	  		if(frame.binaryvalue)
    	  		{
    	  			snp.setBinaryvalue(true);
    	  		}
    	  		
    	  		if(frame.wantpengzhang)
    	  		{
    	  			snp.setPengzhang(true);
    	  		}
    	  		
    	  		if(frame.saved)
    	  		{
    	  			snp.setSaved(true);	
    	  		}
/*    	  		if(frame.paintpic)
    	  		{
    	  			snp.setPic(true);
    	  		}*/
    	  		
    	  		if(frame.gety)
    	  		{
    	  			snp.setY(true);
    	  		}
    	  		
    	  		if(frame.selectButton.isEnabled())
    	  		{
	    	  		/*获取视频路径*/
	    	  		String p = frame.getPath();
	    	  		Seek seek = new Seek(p);
	    	  		/*初始化视频*/
					seek.initVF();
					/*获取视频总帧数*/
	    	  		int total = seek.getTotal();
	    	  		/*逐帧处理*/
	    			while(frame.getStart()&&totalpic<total){	  
	    		  		Thread.sleep(20);    		 	
	    		 		src[0] = seek.capture(totalpic);
						inImage = new BufferedImage(320,240,BufferedImage.TYPE_INT_RGB);
						inImage.getGraphics().drawImage(src[0],0,0,320,240,null);
						/*原始视频显示*/
	    		 		imgpanel.setImage(inImage);
	    		 		
	    		 		/*SNP结果视频显示*/
	    		 		frame.setRecIcon(snp.SNPProcess(inImage));
	    		   		imgpanel.repaint(); 
	    		   		imgpanel.setBounds(new Rectangle(0,0,320,240));
	    	  			/*跳帧数*/
	    	  			try{
			    	 		frame.skipframenum = Integer.parseInt(frame.skipnum.getText());
			    	 		totalpic = totalpic + frame.skipframenum;
						}catch(NumberFormatException ee)
						{
							totalpic = totalpic + 1;
						}					
	    			}
	    			imgpanel.setBounds(new Rectangle(0,0,320,240));
    			}
    			else
    			{
    				CaptureFrame CF = new CaptureFrame();
    				CF.playerOpen();
    				Thread.sleep(3000);
    				try
    				{
	    				while(frame.getStart())
	    				{
	    					Thread.sleep(30);  
	    					inImage = CF.capture(320, 240);
	    					/*原始视频显示*/
		    		 		imgpanel.setImage(inImage);
		    		 		
		    		 		/*SNP结果视频显示*/
		    		 		frame.setRecIcon(snp.SNPProcess(inImage));
		    		   		imgpanel.repaint(); 
		    		   		imgpanel.setBounds(new Rectangle(0,0,320,240));
	    				}
	    			}catch(Exception e){}
	    			finally
	    			{
	    				CF.playerclose();
	    			}
    				
    			}
    			
    		}
        }catch(Exception e){System.out.print("Interrupt Error!"); }
    
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -