?? snpframe.java
字號(hào):
btn.setText("不使用滑桿條調(diào)整參數(shù)");
}
else
{
frame.jSlider.setEnabled(false);
frame.jSlider2.setEnabled(false);
frame.useslider = false;
btn.setText("使用滑桿條調(diào)整參數(shù)");
}
}
}
}
/**/
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(" 現(xiàn)在對(duì)視頻圖像進(jìn)行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(" 現(xiàn)在對(duì)攝像頭圖像進(jìn)行SNP處理");
frame.selectButton.setEnabled(false);
frame.startButton.setEnabled(true);
frame.saveButton.setEnabled(true);
frame.totalalphaButton.setEnabled(true);
frame.binaryButton.setEnabled(true);
}
}
}
/*選擇按鈕響應(yīng)事件*/
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) {
/*選擇好視頻后,設(shè)置可以處理*/
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);
}
}
}
}
/*開(kāi)始按鈕響應(yīng)事件*/
static class StartButtonListener implements ActionListener{
SNPFrame frame;
public StartButtonListener(SNPFrame frame){
this.frame=frame;
}
public void actionPerformed(ActionEvent e){
JButton btn=(JButton)e.getSource();
/*如果已經(jīng)選擇了視頻,則可以進(jìn)行處理*/
if(btn.isEnabled())
{
/*如果當(dāng)前為SNP處理,則點(diǎn)擊執(zhí)行處理*/
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("重新開(kāi)始");
}
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);
/*如果可以處理,設(shè)置是否需要保存圖像*/
}
}
}
}
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();
/*如果當(dāng)前不在處理中,則可以選擇保存與否*/
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);
}
}
}
}
/*二值化膨脹按鈕響應(yīng)事件*/
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();
/*如果當(dāng)前不在處理中,則可以選擇保存與否*/
if(btn.isEnabled())
{
if(btn.getText().equals("二值膨脹"))
{
frame.setPengzhang(true);
btn.setText("不膨脹 ");
}
else
{
btn.setText("二值膨脹");
frame.setPengzhang(false);
}
}
}
}
/*保存按鈕響應(yīng)事件*/
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();
/*如果當(dāng)前不在處理中,則可以選擇保存與否*/
if(btn.isEnabled())
{
if(btn.getText().equals("保存圖像"))
{
frame.setSaved(true);
btn.setText("不保存 ");
}
else
{
btn.setText("保存圖像");
frame.setSaved(false);
}
}
}
}
/*響應(yīng)是否獲取光線強(qiáng)度總和*/
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("光強(qiáng)度和"))
{
frame.setTotalalpha(true);
btn.setText("不須求 ");
}
else
{
btn.setText("光強(qiáng)度和");
frame.setTotalalpha(false);
}
}
}
}
/*描述分布曲線響應(yīng)事件*/
/* 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("不須畫(huà)");
}
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);
/*增加開(kāi)始按鈕和選擇按鈕響應(yīng)*/
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();
/*獲取視頻總幀數(shù)*/
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結(jié)果視頻顯示*/
frame.setRecIcon(snp.SNPProcess(inImage));
imgpanel.repaint();
imgpanel.setBounds(new Rectangle(0,0,320,240));
/*跳幀數(shù)*/
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結(jié)果視頻顯示*/
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!"); }
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -