📄 snpframe.java
字号:
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 + -