版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、*实践教学* 兰州理工大学计算机与通信学院2016年春季学期 软件工程开发综合训练 课程设计题 目: 基于人脸检测技术的人数统计系统 专业班级: 计算机科学与技术13级4班 姓 名: 乔琪 学 号: 指导教师: 曹来成 成 绩: 目 录摘 要11.问题描述21.1问题背景21.2设计要求21.3面部感知系统的重要内容22.系统设计32.1各功能模块说明32.2总体结构设计42.3图像预处理的层次图53.系统测试53.1测试的目的53.2测试原则63.3测试方案73.4测试结果73.5 测试总结10参考文献11总结12附录(程序源代码)13摘 要 图像拼接(image mosaic)技术是将一组
2、相互间重叠部分的图像序列进行空间匹配对准,经重采样合成后形成一幅包含各图像序列信息的宽视角场景的、完整的、高清晰的新图像的技术。图像拼接在摄影测量学、计算机视觉、遥感图像处理、医学图像分析、计算机图形学等领域有着广泛的应用价值。 一般来说,图像拼接的过程由图像获取,图像配准,图像合成三步骤组成,其中图像配准是整个图像拼接的基础。本文研究了两种图像配准算法:基于特征和基于变换域的图像配准算法。 在基于特征的配准算法的基础上,提出一种稳健的基于特征点的配准算法。首先改进Harris角点检测算法,有效提高所提取特征点的速度和精度。然后利用相似测度NCC(normalized cross correl
3、ation归一化互相关),通过用双向最大相关系数匹配的方法提取出初始特征点对,用随机采样法RANSAC(Random Sample Consensus)剔除伪特征点对,实现特征点对的精确匹配。最后用正确的特征点匹配对实现图像的配准。本文提出的算法适应性较强,在重复性纹理、旋转角度比较大等较难自动匹配场合下仍可以准确实现图像配准。关键词:图像拼接图像配准图像融合全景图 1. 问题描述1.1问题背景:随着安全入口控制和金融贸易方面应用需要的快速增长,生物统计识别技术得到了新的重视。目前,微电子和视觉系统方面取得的新进展,使该领域中高性能自动识别技术的实现代价降低到了可以接受的程度。而人脸识别是所有
4、的生物识别方法中应用最广泛的技术之一,人脸识别技术是一项近年来兴起的,但不大为人所知的新技术。人们更多的是在电影中看到这种技术的神奇应用:警察将偷拍到的嫌疑犯的脸部照片,输入到电脑中,与警方数据库中的资料进行比对,并找出该嫌犯的详细资料和犯罪记录。这并非虚构的情节。在国外,人脸识别技术早已被大量使用在国家重要部门以及军警等安防部门。在国内,对于人脸识别技术的研究始于上世纪90年代,目前主要应用在公安、金 融、网络安全、物业管理以及考勤等领域。1.2设计要求:本设计要求学生开发一个基于人脸检测技术的人数统计系统,可以实现在一张有多张人脸的图像中检测出人脸,并统计出图像中的人数(允许有误差)。该系
5、统的主要关键技术问题是人脸检测算法。i、要求开发出一个可独立运行的基于人脸检测技术的人数统计系统。整个系统由图像预处理、人脸检测、人数统计及结果输出等模块组成;ii、首先要对人脸/非人脸图像进行预处理,预处理的步骤包括:对图像进行灰度化、直方图均衡化、中值滤波等操作;iii、其次要选择、实现一种人脸检测算法(例如:基于AdaBoost的人脸检测算法),人脸检测准确率应超过80%。iv、系统的开发可以采用C+或Matlab编程语言来实现;v、要求设计的基于人脸检测技术的人数统计系统可独立运行,具有良好的用户交互界面、易操作性和可靠性等。1.3面部感知系统的重要内容基于视觉通道信息的面部感知系统,
6、包括人脸检测和跟踪、面部特征定位、面部识别、人脸归类(年龄、种族、性别等的判别)、表情识别、唇读等分系统,如图1-1所式,可以看出,继人脸检测和跟追之后,面部特征定位通常是面部感知的一个必备环节,是后续工作的基础,具有重要的意义。尽管人脸识别不能说是其他面部感知模块的必备功能,但是, 可以肯定的是,利用已知的身份信息,结合特定人的先验知识,可以提高表情分析、唇读和语音识别、手势识别乃至手写体识别的可靠性。而计算机对使用者身份确认的最直接的应用就是基于特定使用者的环境设置:如使用者的个性化工作环境,信息的共享和隐私保护等等。2. 系统设计该人脸检测系统主要有五个部分构成:图像获取功能、图像预处理
7、功能、人脸定位功能、特征提取功能、识别功能。2.1各功能模块说明i、图像获取功能: 该模块主要是从摄像头拍照后进行获取图片,也可以从图片库中获取,获取后的图片可以在软件的界面中显示出来以便进行识别。 ii、图像预处理功能 : 该模块主要包括图像光线补偿、图像变成灰色、高斯平滑、均衡直方图、实现图像对比度增强、二值化变换等。 iii、人脸定位功能: 人脸定位是将典型的脸部特征(如眼睛,鼻尖,嘴唇等等)标记出来,在本系统中,定位的特征是眼睛,鼻尖和嘴巴三个。由于眼睛具有对称性,因此可以很快就能标记出来,而鼻子是在眼睛下面,且嘴巴在鼻子下面,所以只要眼睛标记好,鼻子和嘴巴也能相应的标记出来。 iv、
8、特征提取功能: 特征提取按以下4个步骤进行:(1)、提取两只眼睛的距离(2)、眼睛的倾角度(3)、眼睛、嘴巴的重心(4)、用一个矩形标出每一个特征 v、识别功能: 该模块通过与库存中的特征向量进行比较,找出与特征最相近的参数,再对该参数进一步分析。如果分析在我们所确认的范围内,我们就认为该人就是我们所要找的。然后从库存中提取出该人相关的信息,并显示出来。如果库存中没有,则给出提示是否对存库作为样本。2.2总体结构设计 该应用程序的总体结构设计流程图如图21所示:用 户从“文件”菜单中选择“打开”选项在弹出的“打开”对话框中选择要打开的位图,点击“确定”,应用程序显示所要打开的位图 获取脸部区域
9、获取特征参数人脸定位识别图像预处理 显示识别结果图21总体结构设计流程图2.3图像预处理的层次图如图2-2所示: 预处理光线补偿图像灰度化高斯平滑均衡直方图图像对比度增强二值化图2-2 预处理的层次图3. 系统测试3.1测试的目的:简单地说,就是替用户受过,测试的最终目的是确保最终交给用户的产品的功能符合用户的需求,把尽可能多的问题在产品交给用户之前发现并改正。 具体地讲,测试一般要达到下列目标: i、确保产品完成了它所承诺或公布的功能,并且所有用户可以访问到的功能都有明确的书面说明-在某种意义上与ISO9001是同一种思想。 产品缺少明确的书面文档,是厂商一种短期行为的表现,也是一种不负责任
10、的表现。所谓短期行为,是指缺少明确的书面文档既不利于产品最后的顺利交付,容易与用户发生矛盾,影响厂商的声誉和将来与用户的合作关系;同时也不利于产品的后期维护,也使厂商支出超额的用户培训和技术支持费用。从长期利益看,这是很不划算的。领测认为接触过的软件产品,很少有向方正这样大大的产品、薄薄的文档。 当然,书面文档的编写和维护工作对于使用快速原型法(RAD)开发的项目是最为重要的、最为困难,也是最容易被忽略的。 最后,书面文档的不健全甚至不正确,也是测试工作中遇到的最大和最头痛的问题,它的直接后果是测试效率低下、测试目标不明确、测试范围不充分,从而导致最终测试的作用不能充分发挥、测试效果不理想。
11、ii、 确保产品满足性能和效率的要求 使用起来系统运行效率低(性能低)、或用户界面不友好、用户操作不方便(效率低)的产品不能说是一个有竞争力的产品。 用户最关心的不是你的技术有多先进、功能有多强大,而是他能从这些技术、这些功能中得到多少好处。也就是说,用户关心的是他能从中取出多少,而不是你已经放进去多少。 iii、 确保产品是健壮的和适应用户环境的 健壮性即稳定性,是产品质量的基本要求,尤其对于一个用于事务关键或时间关键的工作环境中。 另外就是不能假设用户的环境(某些项目可能除外),如:报业用户许多配置是比较低的,而且是和某些第三方产品同时使用的。通过导入图片,检测人数统计的速度以及准确程度,
12、分别导入一张、两张、三张、四张、五张以及14张人脸的图片,检测程序的正确率。3.2测试原则:i、应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。 ii、测试用例应由测试输入数据和与之对应的预期输出结果两部分组成。iii、在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。不合理的输入条件是指异常的,临界的,可能引起问题异变的输入条件。iv、充分注意测试中的群集现象。经验表明,测试后程序残存的错误数目与该程序中以发现的错误数目或检错率成正比。应该对错误群集的程序段进行重点测试。v、严格执行测试计划,排除测试的随意性。测试计划应包括:所测软件的功能输入和输出,测试内容,各项测试
13、的进度安排,资源要求,测试资料,测试工具,测试用例的选择,测试的控制方法和过程,系统的组装方式,跟踪规则,调试规则,以及回归测试的规定等等以及评价标准。vi、应当对每一个测试结果做全面的检查。vii、妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。3.3测试方案:本系统主要由图像处理、人脸定位、特征提取、识别四个部分组成,而图像处理对于后面的工作结果好坏起着至关重要的作用,因此从软件开发的最初阶段我们就要对软件进行不断的测试,对图像处理模块中的各个子模块进行测试以便检测经过处理后的图像效果是否达到预期的效果。3.4测试结果:i、主界面:图41 在运行程序的主界面有两个菜单选
14、项,分别是菜单和操作。菜单下包含从图片统计和退出功能,从图片统计即导入图片,还有操作选项里面包含识别,点击“识别”一次即加载图片,点击第二次即识别图片。ii、导入图片界面:图42图43 上面两张图分别是导入图片过程中要求选择图片的路径,下面从文件夹导入一张图片。图44点击“识别” ,将会进行加载图片,加载完成之后会有提示,再次点击“识别”,将会识别出如下的结果。图45正确的识别出图片中总共有14个人,但是在有些情况下也会出现错误,你如下面的情况:图46明明是两个人,但是识别出来的却是三个人。但是在整个测试过程中能满足80%的情况下是正确的。 3.5 测试总结:在人脸检测测试的整个人过程中,随机
15、导入图片,测试结果显示,当导入的图图尺寸过大或者人脸亮度较暗时,识别图片时可能会出错,究其原因,可能是在设计的过程中没有添加曝光增亮环节,还有本设计支持的图片格式为jpg。总体来说,实现了一个基于人脸检测技术的人数统计系统,可以实现在一张有多张人脸的图像中检测出人脸,并统计出图像中的人数(允许有误差)。该系统的主要关键技术问题是人脸检测算法。i、整个系统由图像预处理、人脸检测、人数统计及结果输出等模块组成;ii、预处理的步骤包括:对图像进行灰度化、直方图均衡化、中值滤波等操作;iii、实现了基于AdaBoost的人脸检测算法,人脸检测准确率应超过80%。iv、系统的开发采用JAVA编程语言来实
16、现;在eclipse中集成了WindowBuilder,以及使用了opencv2.4.9。v、具有良好的用户交互界面、易操作性和可靠性等。参考文献1. 侯戬,通用车牌定位系统的研究与实现D.华南理工大学,2011.2. 王永杰,裴明涛,贾云得.多信息融合的快速车牌定位J.中国图像图形学报,2014,3 3. 山世光.面部特征检测与识别的研究与实现.哈尔滨工业大学,1999,7 4. 蒋遂平.人脸识别技术及应用简介.中国计算机世界出版社,2003,125. 徐慧.java数字图像实用工程案例精选.人民邮电出版社,2004,3 6. 徐慧.java数字图像模式识别技术及工程实践.北京:人民邮电出版
17、社,2004,3 7. 胡迎春等.人脸图像特征点眼睛的定位与提取.柳州:广西工学院学报,2003,3 8. 周长发.精通java图像处理编程.北京:电子工业出版社,2004,10 9. 张宏林.java数字图像模式识别技术及工程实践. 北京:人民邮电出版社,2003,4 10. 何斌等.java数字图像处理. 北京:人民邮电出版社,2001,4 11. 黄维通,姚瑞霞.Vc+6.0程序设计教程. 北京:机械工业出版社,2003,412. 马安鹏.Vc+ 6.0程序设计导学 .北京:清华大学出版社,2003,6 13. 张威等.java程序设计技巧与实例.北京:中国铁道出版社,2003,3 14
18、. 黄维通 姚瑞霞著.visual C+程序设计教程. 北京:机械工业出版社,2004,1 总结在这几周的课设里,面对着诸多的问题和考验,我一次又一次享受了难题解决前的困惑和难题解决后的兴奋。虽然本次设计的成品还存在着一些问题,但是,对于作者来说,却是不小的收获。经过几周的课程设计,对我各方面的影响都很大,对此我体会颇多: 1、在设计的过程中,每一个步骤都十分的重要。设计前,一定要将需求分析工作做透彻,这直接关系到系统开发实现的难易程度和设计的进度。这就要求我们经常与指导老师和用户交流信息,即使发现设计方向上的错误。千万不要认为分析工作可有可无,分析做得好,实现起来时就相当轻松。就像设计数据库
19、系统,建表工作是最重要的一样。一旦我们将内容和设计思想确定下来以后,不要轻易改动。确实要改,必须征求指导老师的意见。一般,指导老师丰富的经验将给我们极大的帮助。2、熟悉软件开发工具,如eclipse、opencv、WindowBuilder插件等。这个只要通过动手熟悉就可以了,以前的学习方法是看书看书再看书,上机操作的时间很少,过后就忘了。经过这次设计,让我清楚的感觉到开发工具的学习是要边看书边动手才学得快、学得牢。3、要经常与其他人交流,能获得许多有用的信息。不要怕将自己的作品演示给别人看,别人会帮助你检查出许多你意想不到的错误,开阔你的思路,检验你的设计思想,提出很多有用的建议。这些建议往
20、往是非常及时的,是你少走弯路,提高开发效率。只有集思广益,善于借鉴,才能在最短的时间内完成最多的工作。本次课程设计是针对我们本学期来所学知识而进行的一次全面性的检验,它涵盖的知识面广,涉及到多个领域,需要我们具有较高的综合知识水平及较强的解决问题的能力。通过这次设计,一方面让我更进一步的熟悉和掌握了Java语言的基本语法以及更深入的了解了算法和eclipse开发工具的使用。另一方面在动手能力上有了很大的提高,以前学的知识只是“知识”,而现在是将“知识”转化成自身的本领,全面提高了自身解决具体问题的能力。附录(程序源代码)主界面程序:package yl.facerec;import org.o
21、pencv.core.Core;import org.opencv.core.Mat;import org.opencv.core.MatOfRect;import org.opencv.core.Point;import org.opencv.core.Rect;import org.opencv.core.Scalar;import org.opencv.highgui.Highgui;import org.opencv.objdetect.CascadeClassifier;public class DetectFaceprivate Mat image;public int runDe
22、tectFace()CascadeClassifier faceDetector=new CascadeClassifier(./xml/lbpcascade_frontalface.xml);image=Highgui.imread(MainWindow.getPhotoPath();System.out.println(MainWindow.getPhotoPath();MatOfRect faceDetections=new MatOfRect();faceDetector.detectMultiScale(image,faceDetections);for(Rect rect:face
23、Detections.toArray()Core.rectangle(image,new Point(rect.x,rect.y),new Point(rect.x+rect.width,rect.y+rect.height),new Scalar(0,255,0);Highgui.imwrite(tmp/tmp.jpg,image);return faceDetections.toArray().length;基于人脸检测的程序:package yl.facerec;import java.awt.BorderLayout;import java.awt.EventQueue;import
24、java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import javax.swing.ImageIcon;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;
25、import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JSplitPane;import javax.swing.SwingConstants;public class MainWindowprivate JFrame frame;private JMenuItem menuItem_Recognize;private JMenu menuEdit;private JMenu menu_File;private JMenuItem me
26、nuItem_FromPicture;private JMenuItem menuItem_Exit;private int countOfPeople,detectCount=0;private DetectFace detectFace;private static String photoPath;private JSplitPane splitPane_FaceRecognition;private JScrollPane scrollPane_DisplayPicture_Left;private JScrollPane scrollPane_DisplayPicture_Right
27、;private static JLabel label_DisplayPicture_Left;private static JLabel label_DisplayPicture_Right;private JPanel panelSoounth;public static void main(String args)EventQueue.invokeLater(new Runnable()public void run()tryMainWindow window=new MainWindow();window.frame.setVisible(true);catch(Exception
28、e)e.printStackTrace(););public MainWindow()detectFace=new DetectFace();initialize();private void initialize()frame=new JFrame();frame.setTitle(基于人脸检测的人数统计系统);frame.setBounds(200,100,800,600);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/ -JMenuBar menuBar_MainWindow=new JMenuBar();frame.setJ
29、MenuBar(menuBar_MainWindow);/ -menu_File=new JMenu(菜单);menu_File.setFont(new Font(微软雅黑,Font.PLAIN,14);menuBar_MainWindow.add(menu_File);/ -menuItem_FromPicture=new JMenuItem(从图片统计);menuItem_FromPicture.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)System.loadLibrary
30、(opencv_java249);JOptionPane.showMessageDialog(frame,请打开一张图片!);JFileChooser chooser=new JFileChooser(./test/);int result=chooser.showOpenDialog(frame);if(result=JFileChooser.APPROVE_OPTION)label_DisplayPicture_Right.setIcon(null);photoPath=chooser.getSelectedFile().getAbsolutePath();System.out.print
31、ln(photoPath);label_DisplayPicture_Left.setIcon(new ImageIcon(photoPath););menuItem_FromPicture.setFont(new Font(微软雅黑,Font.PLAIN,14);menu_File.add(menuItem_FromPicture);/ -menuItem_Exit=new JMenuItem(退 出);menuItem_Exit.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)S
32、ystem.exit(0););menuItem_Exit.setFont(new Font(微软雅黑,Font.PLAIN,14);menu_File.add(menuItem_Exit);/ -menuEdit=new JMenu(操作);menuEdit.setFont(new Font(微软雅黑,Font.PLAIN,14);menuBar_MainWindow.add(menuEdit);/ -menuItem_Recognize=new JMenuItem(识别);menuItem_Recognize.addActionListener(new ActionListener()pu
33、blic void actionPerformed(ActionEvent e)if(isNull()if(detectCount=0)JOptionPane.showMessageDialog(frame,正在加载图片,请稍后。);detectFace.runDetectFace();detectCount+;tryThread.sleep(500);catch(InterruptedException e1)e1.printStackTrace();JOptionPane.showMessageDialog(frame,加载图片完毕,请点击“识别”按钮进行识别!);elsenew File
34、(tmp/tmp.jpg).delete();countOfPeople=detectFace.runDetectFace();label_DisplayPicture_Right.setIcon(new ImageIcon(tmp/tmp.jpg);JOptionPane.showMessageDialog(frame,该图片中共有+countOfPeople+个人!);detectCount=0;elseJOptionPane.showMessageDialog(frame,请加载图片后再操作!););menuItem_Recognize.setFont(new Font(微软雅黑,Fon
35、t.PLAIN,14);menuEdit.add(menuItem_Recognize);/ -splitPane_FaceRecognition=new JSplitPane();frame.getContentPane().add(splitPane_FaceRecognition,BorderLayout.CENTER);/ -scrollPane_DisplayPicture_Left=new JScrollPane();splitPane_FaceRecognition.setLeftComponent(scrollPane_DisplayPicture_Left);/ -label
36、_DisplayPicture_Left=new JLabel();label_DisplayPicture_Left.setHorizontalTextPosition(SwingConstants.CENTER);label_DisplayPicture_Left.setHorizontalAlignment(SwingConstants.CENTER);scrollPane_DisplayPicture_Left.setViewportView(label_DisplayPicture_Left);/ -scrollPane_DisplayPicture_Right=new JScrol
37、lPane();splitPane_FaceRecognition.setRightComponent(scrollPane_DisplayPicture_Right);/ -label_DisplayPicture_Right=new JLabel();label_DisplayPicture_Right.setHorizontalTextPosition(SwingConstants.CENTER);label_DisplayPicture_Right.setHorizontalAlignment(SwingConstants.CENTER);scrollPane_DisplayPictu
38、re_Right.setViewportView(label_DisplayPicture_Right);splitPane_FaceRecognition.setDividerLocation(300);public boolean isNull()if(photoPath!=null)return true;elsereturn false;public JFrame getFrame()return frame;public void setFrame(JFrame frame)this.frame=frame;public JMenuItem getMenuItem_Recognize
39、()return menuItem_Recognize;public void setMenuItem_Recognize(JMenuItem menuItem_Recognize)this.menuItem_Recognize=menuItem_Recognize;public JMenu getMenuEdit()return menuEdit;public void setMenuEdit(JMenu menuEdit)this.menuEdit=menuEdit;public JMenu getMenu_File()return menu_File;public void setMen
40、u_File(JMenu menu_File)this.menu_File=menu_File;public JMenuItem getMenuItem_FromPicture()return menuItem_FromPicture;public void setMenuItem_FromPicture(JMenuItem menuItem_FromPicture)this.menuItem_FromPicture=menuItem_FromPicture;public JMenuItem getMenuItem_Exit()return menuItem_Exit;public void
41、setMenuItem_Exit(JMenuItem menuItem_Exit)this.menuItem_Exit=menuItem_Exit;public int getCountOfPeople()return countOfPeople;public void setCountOfPeople(int countOfPeople)this.countOfPeople=countOfPeople;public int getDetectCount()return detectCount;public void setDetectCount(int detectCount)this.detectCount=detectCount;public DetectFace getDetectFace()return detectFace;public void
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 迎小年贺团圆传统节日小年介绍课件
- 2024民办高等教育行业趋势分析报告
- 2024-2025学年年七年级数学人教版下册专题整合复习卷26.3 实际问题与二次函数(1)(含答案)-
- 寿险的意义与功用课件
- 《公顷和平方千米》教案
- 新版《税法1》考试复习题库大全-上(单选题)
- 2024年房地产经纪人《房地产经纪业务操作》核心备考题库(含典型题、重点题)
- 辽宁省大连市王府高级中学2024-2025学年高二上学期第二学段考试数学试题(含答案)
- 珍惜时间高效学习
- 有效沟通技巧
- 地铁司机岗位招聘笔试题与参考答案
- 2024年电工(高级技师)考前必刷必练题库500题(含真题、必会题)
- 2024秋期国家开放大学专科《统计学原理》一平台在线形考(形成性考核一至三)试题及答案
- 《工业产品销售单位落实质量安全主体责任监督管理规定》(60题)
- 世界技能大赛集训工作方案
- 实验室安全准入考试题库答案
- 2024年新人教版七年级上册地理课件 第一章综合复习
- 2输变电工程施工质量验收统一表式(变电工程土建专业)-2024年版
- 2025年高考语文复习备考复习策略讲座
- 心电图并发症预防及处理
- 四年级科学上册(教科版)第7课让弦发出高低不同的声音(教学设计)
评论
0/150
提交评论