C++简单图像处理系统(课程设计).doc
《C++简单图像处理系统(课程设计).doc》由会员分享,可在线阅读,更多相关《C++简单图像处理系统(课程设计).doc(23页珍藏版)》请在沃文网上搜索。
1、 数字图像处理课程设计报告题 目: 简单图像处理系统 专 业: 信息与计算科学 学 号: 0 组 长: 指导教师: 成 绩: 二一 年 六 月 二十六 日一、课程设计目的课程设计的目的是训练我们学生应用所学数字图像处理知识,完成题目分析、编程实现等软件开发全过程的综合实践能力。巩固、深化学生的理论知识,提高编程水平,并在此过程中培养我们严谨的科学态度和良好的工作作风。二、课程设计基本要求1、对知识点的掌握要求:(1)熟悉数字图像处理的概念,特点及应用(2)掌握数字图像处理处理过程及问题的分析与纠正(3)利用C+对确定对图像处理分析(4)学会C+的使用,掌握C+的程序设计方法2、分组情况:组长:
2、 组员 :设计全过程的监督及协助、部分源程序代码的编写和整个源程序代码的整理。:编写右边直方图Panel的代码:编写主程序并运行:编写左边直方图Panel的代码:结果分析部分及查找相关文献3、课程设计内容以确定处理分析的对象,进行编程来实现这一过程。三、课程设计实现步骤1、问题描述先对图像进行分析,从而编写主程序,编写右边直方图Panel的代码,再编写左边直方图Panel的代码,从而运行出如结果分析中的图像。2、主程序如下:package dege.imagetool;import java.awt.BorderLayout;import java.awt.FlowLayout;import
3、java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.image.BufferedImage;import java.awt.image.ColorModel;import java.awt.image.MemoryImageSource;import java.awt.image.PixelGrabber;import java.io.File;import java.io.IOException;import java.util.Linked
4、List;import javax.imageio.ImageIO;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.
5、swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JSplitPane;import javax.swing.JToolBar;public class MyShowImage extends JFrame /保存当前操作的像素矩阵private int currentPixArray=null;/图像的路径private String fileString=null;/用于显示图像的标签private JLabel imageLabel=null;/加载的图像private BufferedImage newImag
6、e;/图像的高和宽private int h,w;/保存历史操作图像矩阵private LinkedList imageStack=new LinkedList();private LinkedList tempImageStack=new LinkedList();JPanel pane;public MyShowImage(String title) super(title); this.setSize(1000,700); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /创建菜单 JMenuBar jb=new JMenuBar
7、(); JMenu fileMenu=new JMenu(文件); jb.add(fileMenu); JMenuItem openImageMenuItem=new JMenuItem(打开图像); fileMenu.add(openImageMenuItem); openImageMenuItem.addActionListener(new OpenListener(); JMenuItem exitMenu=new JMenuItem(退出); fileMenu.add(exitMenu); exitMenu.addActionListener(new ActionListener()
8、public void actionPerformed(ActionEvent e) System.exit(0); ); JMenu operateMenu=new JMenu(图像处理); jb.add(operateMenu); JMenuItem RGBtoGrayMenuItem=new JMenuItem(灰度图像转换); operateMenu.add(RGBtoGrayMenuItem); RGBtoGrayMenuItem.addActionListener(new RGBtoGrayActionListener(); JMenuItem balanceMenuItem=ne
9、w JMenuItem(均衡化); operateMenu.add(balanceMenuItem); balanceMenuItem.addActionListener(new BalanceActionListener(); JMenu frontAndBackMenu=new JMenu(历史操作); jb.add(frontAndBackMenu); JMenuItem backMenuItem=new JMenuItem(后退); frontAndBackMenu.add(backMenuItem); backMenuItem.addActionListener(new BackAc
10、tionListener(); JMenuItem frontMenuItem=new JMenuItem(前进); frontAndBackMenu.add(frontMenuItem); frontMenuItem.addActionListener(new FrontActionListener(); this.setJMenuBar(jb); JPanel jToolBarPan=new JPanel(new FlowLayout(); FlowLayout defaultFlowLayout=(FlowLayout)jToolBarPan.getLayout(); defaultFl
11、owLayout.setAlignment(FlowLayout.LEFT); JToolBar backAndForwardToolBar=new JToolBar(); jToolBarPan.add(backAndForwardToolBar); JButton openButton=new JButton(打开,new ImageIcon(getClass().getResource(open.jpg); openButton.addActionListener(new OpenListener(); backAndForwardToolBar.add(openButton); JBu
12、tton backButton=new JButton(后退,new ImageIcon(getClass().getResource(b.jpg); backButton.addActionListener(new BackActionListener(); backAndForwardToolBar.add(backButton); JButton forwardButton=new JButton(前进,new ImageIcon(getClass().getResource(f.jpg); forwardButton.addActionListener(new FrontActionL
13、istener(); backAndForwardToolBar.add(forwardButton); JButton outButton=new JButton(离开,new ImageIcon(getClass().getResource(out.jpg); outButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) System.exit(0); ); backAndForwardToolBar.add(outButton); imageLabel=new JLa
14、bel(); JPanel imagePane=new JPanel(); imagePane.add(imageLabel); JScrollPane imageShowPane = new JScrollPane(imagePane); HistPanel histPanel=new HistPanel(this); JPanel p2=new JPanel(); JSplitPane jSplitPane3=new JSplitPane(JSplitPane.VERTICAL_SPLIT, histPanel,p2); jSplitPane3.setDividerLocation(250
15、); jSplitPane3.setOneTouchExpandable(true); JSplitPane jSplitPane2=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jSplitPane3,imageShowPane); jSplitPane2.setDividerLocation(280); jSplitPane2.setOneTouchExpandable(true); pane=new OperatePane(this); JSplitPane jSplitPane1=new JSplitPane(JSplitPane.HORIZO
16、NTAL_SPLIT, jSplitPane2,pane); jSplitPane1.setDividerLocation(850); jSplitPane1.setOneTouchExpandable(true); this.add(jSplitPane1,BorderLayout.CENTER); this.add(jToolBarPan,BorderLayout.NORTH); this.setVisible(true);private class OpenListener implements ActionListener public void actionPerformed(Act
17、ionEvent e) JFileChooser jc=new JFileChooser(); int returnValue=jc.showOpenDialog(null); if (returnValue = JFileChooser.APPROVE_OPTION) File selectedFile = jc.getSelectedFile(); if (selectedFile != null) fileString=selectedFile.getAbsolutePath(); try newImage =ImageIO.read(new File(fileString); w=ne
18、wImage.getWidth(); h=newImage.getHeight(); currentPixArray=getPixArray(newImage,w,h); imageStack.clear(); tempImageStack.clear(); imageStack.addLast(currentPixArray); imageLabel.setIcon(new ImageIcon(newImage); catch(IOException ex) System.out.println(ex); MyShowImage.this.repaint(); /MyShowImage.th
19、is.pack(); /菜单监听器private class RGBtoGrayActionListener implements ActionListener public void actionPerformed(ActionEvent e) int resultArray=RGBtoGray(currentPixArray); updateImage(resultArray); private class BalanceActionListener implements ActionListener public void actionPerformed(ActionEvent e) i
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 简单 图像 处理 系统 课程设计