版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目一计算机视觉概述《计算机视觉应用开发》全套可编辑PPT课件项目一计算机视觉概述项目二图像浏览与编辑工具开发项目三硬币检测及计数项目四道路边缘和车道线检测项目五二维码检测与识别项目六智能车牌识别项目七人脸检测与计数项目八基于网络摄像头的动态目标监测与追踪【项目导引】在人工智能技术持续突破与产业数字化转型的浪潮下,计算机视觉作为实现图像理解、目标检测、场景分析等核心功能的关键技术,已成为智能制造、智慧医疗、自动驾驶等领域的创新引擎。然而,开发环境的碎片化配置难题、框架组件的版本兼容性冲突、软硬件资源的高度耦合性,严重制约着算法模型的研发效率与落地应用。构建标准化、可复用的开发环境,不仅能够缩短30%以上的项目启动周期,更能为多团队协作开发和跨平台部署奠定坚实基础。本项目聚焦于计算机视觉开发环境的搭建,旨在为同学们提供一个全面、高效且易于上手的开发平台。通过本项目实践,同学们将深入了解计算机视觉技术的开发流程与工具链,掌握环境搭建的关键步骤与技巧,从而在未来的科研与工程实践中,能够迅速上手并高效推进项目。此外,本项目还将引导同学们探索与优化开发环境,以适应不同应用场景与性能需求,进一步提升其计算机视觉领域的实践能力与创新能力。【学习指导】知识目标技能目标(1)能够成功搭建计算机视觉开发环境。(2)能够使用PyCharm完成Python程序的编辑、运行和调试。(3)能够使用PyQt5设计开发简单的界面程序。3(1)掌握计算机视觉的概念,了解OpenCV及其主要模块;(2)了解计算机视觉常用的开发工具;知识目标(1)锻炼学生的动手能力,增强积极主动寻求解决问题方法的意识。(2)培养学生服务集体、团结协作的团队精神。素养目标【项目描述】小王是一名对科技创新充满浓厚兴趣的大学生。某天,在校园的一次科技活动中,他聆听了一场关于计算机视觉技术如何读取并处理数字图像的精彩讲座。讲座中,讲师详细阐述了计算机视觉技术在图像处理领域的广泛应用和巨大潜力,这深深触动了小王。为了能够学习计算机视觉相关知识并亲自动手实践,小王决定在自己的电脑上搭建一个灵活高效的计算机视觉开发环境。请你帮助小王完成这个任务。【项目分析】了解计算机视觉相关知识及常用的开发工具;01下载安装Miniconda,创新虚拟环境;02安装OpenCV、PyQt5等相关依赖库;03安装、配置及使用JupyterLab、Pycharm等开发工具。04安装、配置QT开发工具,设计一个简单的界面。05任务一
初识计算机视觉【知识链接】--计算机视觉的概述计算机视觉定义在生理学上,视觉(Vision)的产生都始于视觉器官感受细胞的兴奋,并于视觉神经系统对收集到的信息进行加工之后形成。我们人类通过视觉来直观地了解眼前事物的形体和状态,大部分人依靠视觉来完成做饭、越过障碍、读路牌、看视频以及无数其他任务。对于人类来说,视觉无疑是最重要的一种感觉。不仅人类是“视觉动物”,对于大多数动物来说,视觉也都起到十分重要的作用。通过视觉,人和动物感知外界物体的大小、明暗、颜色、动静,获得对机体生存具有重要意义的各种信息,通过这些信息能够得知,周围的世界是怎样的,以及如何和世界交互。而在计算机视觉出现之前,图像对于计算机来说是黑盒的状态。一张图像对于计算机来说只是一个文件、一串数据。计算机并不知道图片里的内容到底是什么,只知道这张图片的尺寸、所占内存和格式等。如果计算机、人工智能想要在现实世界发挥重要作用,就必须看懂图片。因此,半个世纪以来,计算机科学家一直在想办法让计算机也拥有视觉,从而产生了“计算机视觉”这个领域。视觉动物
图像属性(计算机所了解到的图像信息)【知识链接】--计算机视觉的概述计算机视觉是一门研究如何使计算机通过数字图像或视频数据获取、处理和理解视觉信息的科学与技术。它涉及计算机科学、数学、物理学、工程学等多个学科领域,目标是让计算机能够像人类一样“看”世界,并从中识别出物体、场景、动作等各种视觉元素,进而做出相应的决策和行动。计算机擅长拍出有惊人保真度和细节的照片,从某种程度上来说,计算机的人工“视觉”比人类与生俱来的视觉能力强多了。但正像我们平日所说的“听见不等于听懂”一样,“看见”也不等于“看懂”,要想让计算机真正地“看懂”图像,那就不是一件简单的事情了。计算机视觉是一个复杂而多样的领域,其核心原理主要包括图像处理、特征提取和机器学习。这些原理相互关联,共同构成了计算机能够理解和分析图像信息的基础。第一步:图像处理。通过对原始图像进行预处理——突出关键信息并抑制不必要的干扰,可提高后续分析的效果,其涉及的常见技术包括图像增强、去噪和滤波等。第二步:特征提取。利用算法(如边缘检测、角点检测和特征点提取)可从经处理的图像中提取具有代表性的特征。这些特征能够用于描述图像内容,为后续的目标识别和跟踪奠定基础。第三步:机器学习。运用机器学习,特别是深度学习技术,可对提取的特征进行学习和训练,以实现计算机对图像内容的自动理解和识别。计算机视觉技术在实际应用中得到了广泛体现。例如,在人脸识别、自动驾驶及医学影像分析等领域,计算机视觉技术不仅提升了人们的工作效率,还优化了决策过程,展现出广阔的发展前景。第4步第1步第2步第3步【知识链接】--计算机视觉的概述
计算机视觉的发展历程(1)早期阶段(20世纪50年代至70年代)1959年,神经生理学家DavidHubel和TorstenWiesel通过猫的视觉实验,首次发现了视觉初级皮层神经元对于移动边缘刺激敏感,发现了视功能柱结构,为视觉神经研究奠定了基础。(2)知识驱动与模式识别阶段(20世纪70年代至90年代)70年代至80年代,计算机视觉研究开始向应用方向转移,涉及图像分析、目标检测和跟踪、机器视觉系统等领域。80年代末至90年代,计算机视觉进入了机器学习时代,出现了基于机器学习的图像分类和目标检测算法。(3)激增与深度学习的初步尝试阶段(20世纪90年代至21世纪初)90年代,计算机视觉研究进一步发展,主要集中在三维视觉、视频分析和计算机视觉应用等方面。随着计算能力的提升和数据集的积累,计算机视觉研究开始关注特征提取与匹配,提出了许多传统算法。(4)深度学习的突破阶段(21世纪10年代)2010年代,深度学习在计算机视觉中得到了广泛应用。2012年,AlexNet在ImageNet竞赛中获胜,深度卷积神经网络(CNN)应用于图像分类,显著降低了错误率。2014年,生成对抗网络(GAN)被提出,开创了图像生成和合成的新方法。(5)成熟与广泛应用阶段(21世纪20年代至今)进入21世纪20年代,深度学习在计算机视觉应用中变得无处不在,涵盖了自动驾驶、医疗影像分析、智能监控等领域。【知识链接】--计算机视觉的概述计算机视觉的主要任务一般而言,计算机视觉的典型任务可以归纳为以下几个关键且具有代表性的方面。这些方面涵盖了计算机视觉技术在不同应用场景和领域中所发挥的重要作用,是计算机视觉研究和实践的核心内容。(1)图像分类(2)目标检测(3)语义分割(4)实例分割(5)目标追踪【知识链接】--计算机视觉的概述计算机视觉的主要任务(1)图像分类图像分类是计算机视觉中最基本的任务之一。它的目标是将输入的图像分配到一个预先定义的类别中。如图3.1.13所示,通过图像分类,计算机识别到图像中有人(person)、树(tree)、草地(grass)、天空(sky)。图像分类通常需要使用大量的标注数据进行训练,以学习图像中的特征和模式。深度学习技术在图像分类任务中取得了巨大的成功,目前已经可以达到非常高的准确率。图像分类在许多领域都有着广泛的应用,例如:安防领域的人脸识别和智能视频分析等,交通领域的交通场景识别,互联网领域基于内容的图像检索和相册自动归类,医学领域的图像识别等。【知识链接】--计算机视觉的概述计算机视觉的主要任务(1)图像分类图像分类是计算机视觉中最基本的任务之一。它的目标是将输入的图像分配到一个预先定义的类别中。如图3.1.13所示,通过图像分类,计算机识别到图像中有人(person)、树(tree)、草地(grass)、天空(sky)。图像分类通常需要使用大量的标注数据进行训练,以学习图像中的特征和模式。深度学习技术在图像分类任务中取得了巨大的成功,目前已经可以达到非常高的准确率。图像分类在许多领域都有着广泛的应用,例如:安防领域的人脸识别和智能视频分析等,交通领域的交通场景识别,互联网领域基于内容的图像检索和相册自动归类,医学领域的图像识别等。【知识链接】--计算机视觉的概述计算机视觉的主要任务(2)目标检测目标检测是在图像或视频中确定特定目标的位置和类别。与图像分类不同,目标检测不仅要确定图像中的物体是什么,还要确定物体在图像中的位置,并给出每个目标的具体类别。目标检测在安防监控、智能交通等领域有着广泛的应用。例如,在交通监控中检测车辆和行人的位置,以便进行交通流量统计和违规行为检测。而在多类别目标检测中,一般使用不同颜色的边框对检测到的不同物体的位置进行标记。
目标检测多类别目标检测【知识链接】--计算机视觉的概述计算机视觉的主要任务(3)语义分割语义分割是将图像中的每个像素分配到一个特定的类别中,以实现对图像的像素级理解。它将整个图像分成若干像素组,然后对像素组进行标记和分类。如图3.1.16所示,计算机把图像分为人(红色)、树木(深绿)、草地(浅绿)、天空(蓝色)四类标签。与目标检测相比,语义分割更加精细,可以提供更详细的图像信息。语义分割在医疗图像分析、自动驾驶等领域有着重要的应用。【知识链接】--计算机视觉的概述计算机视觉的主要任务(4)实例分割实例分割是在语义分割的基础上,进一步区分同一类别中的不同个体。实例分割是目标检测和语义分割的结合,在图像中将目标检测出来(目标检测),然后对每个像素打标签(语义分割)。对比图3.1.16、图3.1.17可见,如以人为目标,语义分割不区分属于相同类别的不同实例(所有人都标为红色),而实例分割则区分同类中的不同实例(使用不同颜色区分不同的人)。实例分割在视频监控、虚拟现实等领域有着广泛的应用。【知识链接】--计算机视觉的概述计算机视觉的主要任务(5)目标追踪目标追踪旨在追踪随着时间不断移动的对象,使用连续视频帧作为输入,获取目标的运动轨迹和状态变化。也就是说,计算机对图像序列中的运动目标进行检测、提取、识别和跟踪,以此获得运动目标的运动参数,并进行处理与分析,实现对运动目标的行为理解,以完成更高一级的检测任务。例如,在监控视频中跟踪特定人物的行动。【知识链接】--计算机视觉的概述计算机视觉应用场景(1)人脸识别脸识别技术目前已经广泛应用于金融、司法、军队、公安、边检、政府、航天、电力、工厂、教育、医疗等行业。主要应用于考勤、门禁、身份识别、人脸属性识别、人脸检测跟踪、人脸检索、人脸对比等场景。(2)视频监控目标检测与识别技术是计算机视觉在视频监控中的基础应用。通过对监控视频中的图像进行分析,计算机视觉技术能够识别出特定目标,主要应用场景包含物体、商品智能识别/分析定位、行人属性/行为分析及跟踪、人群密度客流分析、道路车辆行为分析等。(3)自动驾驶计算机视觉在自动驾驶领域起着关键作用,用于车道检测、障碍物识别、交通标志识别和行人检测等。通过摄像头和雷达等传感器获取环境信息,并结合计算机视觉算法实现自动驾驶功能。【知识链接】--计算机视觉的概述计算机视觉应用场景(4)医疗影像计算机视觉在医疗影像分析中应用广泛,如病灶检测、医学图像分割和辅助诊断等。通过对CT、MRI和X光等医学影像的分析,提高诊断的准确性和效率。(5)增强现实与虚拟现实计算机视觉在增强现实(AR)和虚拟现实(VR)中也有重要应用,通过对现实世界的感知和理解,实现虚拟与现实的结合。在游戏、教育、医疗和工业等领域,AR和VR技术带来了新的应用体验和可能性。【知识链接】--计算机视觉开发环境介绍计算机视觉开发环境主要包括Anaconda、OpenCV、CMake等工具以及相关依赖库,这些工具在计算机视觉项目中发挥着重要作用。开发者可根据个人的使用习惯灵活选择相应的软件及工具,下面将对本课程涉及到的开发环境及工具做主要介绍。1.Miniconda简介Miniconda是一个轻量级的Conda发行版,主要用于管理Python环境和软件包。它由Anaconda团队开发,旨在提供一个更轻量、更灵活的环境管理解决方案,是数据科学、机器学习、科学计算等领域的开发者和研究人员常用的工具之一,通过使用Miniconda,用户可以避免版本冲突,确保项目依赖的正确性和稳定性。主要特点包括:轻量级:相比于完整的Anaconda发行版,Miniconda体积更小,安装更快。环境管理:Miniconda允许用户创建隔离的环境,每个环境可以安装不同的库和Python版本。包管理:通过conda命令行工具,用户可以安装、更新和管理软件包。跨平台:Miniconda支持Windows、macOS和Linux操作系统。易于使用:Miniconda提供了一个简单的命令行界面,使得安装和使用变得容易。【知识链接】--计算机视觉开发环境介绍Conda、Miniconda与Anaconda的主要区别:Conda:是一个包管理器和环境管理器,可以用于安装和管理软件包和虚拟环境。Anaconda:是一个基于Conda的数据科学发行版,它包含了Conda、Python以及大量的数据科学相关的软件包。Anaconda适合需要完整数据科学栈的用户。Miniconda:是一个轻量级的Anaconda替代品,它只包含Conda、Python和少量必要的软件包。Miniconda适合只需要基础Python环境和Conda管理功能的用户,用户可以根据自己的需要安装其他软件包。【知识链接】--计算机视觉开发环境介绍2.虚拟环境简介虚拟环境(VirtualEnvironment)是一个独立于操作系统的隔离环境。通过创建虚拟环境,可以在同一台机器上管理多个独立的Python环境,每个环境都可以有自己独立的软件包和配置,从而实现项目之间的隔离和管理。(1)虚拟环境的主要作用包括:隔离环境:每个虚拟环境都是独立的,不会相互干扰。拥有自己的Python解释器和软件包库,可以防止不同项目之间的依赖冲突,确保项目的稳定性和可靠性。版本控制:可以为每个项目创建一个特定版本的虚拟环境,并在其中安装所需的Python版本和软件包,从而确保项目在不同环境中的一致性。依赖管理:可以安装、更新和删除项目所需的软件包和依赖项,而不会影响到其他项目。【知识链接】--计算机视觉开发环境介绍2.虚拟环境简介(2)虚拟环境的主要类别有:虚拟机(VirtualMachines):一种完全模拟的虚拟化技术,允许在一台物理计算机上运行多个独立的虚拟操作系统。每个虚拟机具有自己的操作系统和应用程序,它们在相互隔离的环境中运行。常见的虚拟机软件包括VMware、VirtualBox和Hyper-V。容器(Containers):一种轻量级的虚拟化技术,允许在同一操作系统内核上运行多个隔离的容器。每个容器包含应用程序和其依赖,但它们共享相同的操作系统内核,因此更节省资源和更快速。Docker是最知名的容器化平台之一。Python虚拟环境:特定于Python编程语言的虚拟环境,用于管理Python项目的依赖关系。每个环境可以有不同版本的Python解释器和依赖项。常见的Python虚拟环境工具包括virtualenv和conda。操作系统级虚拟化:一种介于虚拟机和容器之间的虚拟化形式。允许多个虚拟化的操作系统在同一物理主机上运行,共享相同的内核,提供了更高的效率和资源利用率。网络虚拟化:用于模拟网络拓扑,允许在单个物理网络上运行多个逻辑网络。对于网络测试、隔离和虚拟专用云非常有用。云虚拟环境:由云计算提供商提供(如:AmazonWebServices、GoogleCloud等),允许用户租用虚拟机、容器集群和其他云资源,以满足其计算需求。【知识链接】--计算机视觉开发环境介绍2.虚拟环境简介(2)虚拟环境的主要类别有:虚拟机(VirtualMachines):一种完全模拟的虚拟化技术,允许在一台物理计算机上运行多个独立的虚拟操作系统。每个虚拟机具有自己的操作系统和应用程序,它们在相互隔离的环境中运行。常见的虚拟机软件包括VMware、VirtualBox和Hyper-V。容器(Containers):一种轻量级的虚拟化技术,允许在同一操作系统内核上运行多个隔离的容器。每个容器包含应用程序和其依赖,但它们共享相同的操作系统内核,因此更节省资源和更快速。Docker是最知名的容器化平台之一。Python虚拟环境:特定于Python编程语言的虚拟环境,用于管理Python项目的依赖关系。每个环境可以有不同版本的Python解释器和依赖项。常见的Python虚拟环境工具包括virtualenv和conda。操作系统级虚拟化:一种介于虚拟机和容器之间的虚拟化形式。允许多个虚拟化的操作系统在同一物理主机上运行,共享相同的内核,提供了更高的效率和资源利用率。网络虚拟化:用于模拟网络拓扑,允许在单个物理网络上运行多个逻辑网络。对于网络测试、隔离和虚拟专用云非常有用。云虚拟环境:由云计算提供商提供(如:AmazonWebServices、GoogleCloud等),允许用户租用虚拟机、容器集群和其他云资源,以满足其计算需求。【知识链接】--计算机视觉开发环境介绍OpenCV简介OpenCV是OpenSourceComputerVisionLibrary的简称,OpenCV是一个基于开源协议(Apache2)发行的跨平台计算机视觉库,它包含图像处理方面的很多通用算法,在计算机视觉领域是一个非常流行的开源库,尤其是企业开发用的最多。OpenCV支持多种变成语言,c++、python、Java、Ruby、MATLAB等语言。OpenCV是一个开源的计算机视觉库,可以在Windows、Linux、MacOS等操作系统上运行。OpenCV库包含了从计算机视觉各个领域衍生出来的500多种方法,被广泛地应用在人机互动、物体识别、图像分割、运动跟踪、机器人等。【知识链接】--计算机视觉开发环境介绍OpenCV包含4个模块,随着OpenCV的版本不断地更新而发生变化,有的可能被取消,有的可能被融合到其他模块中。OpenCV包括主库和扩展库(opencv_contrib),OpenCV主库涵盖了广泛的计算机视觉领域,主要包括图像处理、物体检测与跟踪、特征提取与匹配等功能。OpenCV的扩展库包含了一些先进的视觉功能和模块,这些模块不在主库中,但可以通过单独安装使用,扩展库中的模块包括AR工具包、相机标定、深度学习接口、人脸识别、高级图像处理和超分辨率技术等功能。模块说明Core包含OpenCV库的基础结构以及基本操作lmproc包含基本的图像转换,包括滤波以及卷积操作Highgui包含用于显示图像或者进行简单输入的用户交互方法。可以看作是一个非常轻量级的
WindowsUI工具包Video包含读取和写视频流的方法Calib3d包含校准单个、双目以及多个相机的算法Feature2d包含用于检测、描述以及匹配特征点的算法Objdectect包含检测特定目标的算法ML包含大量的机器学习的算法Flann包含一些不会直接使用的方法,但是这些方法供其他模块调用GPU包含在CUDAGPU上优化实现的方法Photo包含计算摄影学的一些方法Stitching是一个精巧的图像拼接流程的实现OpenCV常用的模块及其说明
OpenCV包含的模块的层级结构【知识链接】--计算机视觉开发环境介绍PyQt5的优势主要包括以下几个方面:跨平台性:PyQt5基于Qt框架,支持Windows、macOS和Linux等多个操作系统,确保应用程序在不同平台上都能稳定运行。丰富的GUI组件:PyQt5提供了大量的GUI组件,如按钮、文本框、标签、表格、树形视图等,满足各种界面设计需求。此外,它还支持自定义绘图,可以创建图表、绘制图形等。多线程支持:PyQt5允许在应用程序中使用多线程,提高性能和响应性,特别适用于处理复杂的任务和长时间运行的操作。集成性:PyQt5可以与其他Python库和框架集成,如NumPy、Pandas和Matplotlib,便于数据可视化和处理。开源和免费:PyQt5是开源的,可以免费使用。虽然在使用商业应用程序时需要购买商业许可证,但对于开源项目和个人使用是完全免费的。文档和社区支持:PyQt5拥有丰富的文档和活跃的社区支持,这使得学习和解决问题变得更加容易。易于学习和使用:Python语言的简洁性和PyQt5的直观API使得入门相对容易,即使是Python新手也能较快上手。PyQt简介PyQt5是基于Qt5的Python语言实现,由RiverbankComputing开发。它是一个强大的GUI库,提供了超过620个类、6000个函数和方法,支持在Unix、Windows和MacOS等主流操作系统上运行。【知识链接】--计算机视觉开发环境介绍6.JupyterLab简介JupyterLab是一种基于浏览器的交互式开发环境,支持运行代码、可视化数据和记录研究过程。相比传统的JupyterNotebook,JupyterLab提供了更灵活的多窗口布局,允许在同一界面操作代码、文件浏览器、终端和Markdown文档。JupyterLab的主要特点:多窗口布局:支持拖放式界面,能同时打开多个Notebook、控制台或终端。多格式支持:不仅支持.ipynb文件,还支持文本文件、CSV、JSON、Markdown和图片等多种格式。扩展功能:通过插件扩展,添加更多功能,如代码格式化、绘图工具等。实时协作:支持多个用户同时编辑和运行代码。【知识链接】--计算机视觉开发环境介绍7.Pycharm简介PyCharm是一种PythonIDE(IntegratedDevelopmentEnvironment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。1.下载Miniconda打开浏览器,使用网址“”跳转到清华大学开源软件镜像网站,在搜索框输入“anaconda”后点击,然后单击“miniconda”,找到适合自己计算机的版本的安装包进行下载。本项目我们以下载安装“Miniconda3-py310_25.1.1-1-Windows-x86_64.exe”为例,其中:Miniconda3:表示这个版本是基于Python3的(而不是Python2);py310:表示这个Miniconda版本默认安装的Python版本是3.10;Windows-x86_64:表示此版本适合安装在64位Windows操作系统上;exe:表示Windows操作系统下的可执行文件格式(sh文件:Unix/Linux操作系统下的脚本文件)。搜索ananconda查找Miniconda查找Miniconda特定版本的安装包2.安装Miniconda双击运行下载好的Miniconda可执行文件,参考下面的流程进行设置,直至安装完成。注意,安装路径尽量不要选择在C盘,自定义安装在其它磁盘即可,路径不要带有中文或特殊字符。
Miniconda安装向导Miniconda安装用户声明
Miniconda安装方式选择Miniconda安装位置设置3.安装MinicondaMiniconda高级安装选项,可以参照下述建议设置,设置完成后点击“Install”开始安装:
Createshortcuts(supportedpackagesonly)。(建议保持勾选)作用:创建快捷方式,方便访问Anaconda和其相关工具(如AnacondaNavigator、JupyterNotebook)
RegisterAnaconda3asthesystemPython3.10(根据需求决定)作用:将Anaconda的Python版本注册为系统的默认Python版本,方便其他程序(如VSCode、PyCharm)自动使用Anaconda的Python环境。Clearthepackagecacheuponcompletion(根据磁盘空间情况决定)作用:安装完成后清除安装过程中下载的包缓存文件,释放硬盘空间。建议配置:如果是第一次安装Anaconda,建议勾选前两个选项,保持默认配置。如果你需要保留缓存文件,便于未来可能的操作,可以不勾选“Clearthepackagecacheuponcompletion”。
Miniconda安装完成Miniconda安装进程1..测试Miniconda是否安装成功在电脑的菜单栏中打开anaconda命令行,也就是AnacondaPrompt,点击后,如果能在命令行左侧的括号中看到base,则代表安装成功!默认Python版本是3.10,输入命令“python--version”则会显示默认的python版本。至此,Miniconda安装成功。电脑的菜单栏中的AnacondaPrompt查看python版本4.给Miniconda配置国内镜像源在Python开发中,我们经常需要安装各种第三方库。然而,由于这些库的源通常位于国外,国内用户在安装时可能会遇到下载速度慢、安装失败等问题。为了解决这个问题,我们可以配置国内镜像源,由于国内镜像源提供了这些库的本地缓存,因此可以大幅提升下载速度,并减少安装失败的可能性。国内常用的PyPI镜像源地址如下表所示接下来我们给Miniconda和pip配置国内镜像源,以便于后续快速、稳定的下载及安装python相关依赖包。镜像名称镜像地址特点清华大学/simple/高校维护,适合教育网用户阿里云/pypi/simple/覆盖全、同步快、稳定性高中国科技大学/simple/开源镜像站,更新及时豆瓣/simple/社区维护,国内下载速度快华为云/repository/pypi/simple/企业级支持,稳定性强为Miniconda配置国内镜像源接下来我们给Miniconda和pip配置国内镜像源,以便于后续快速、稳定的下载及安装python相关依赖包。(1)为Miniconda配置国内镜像源 打开AnacondaPrompt,运行以下命令,可以查看其默认的镜像源:condainfo创建一个名为.condarc的配置文件。在AnacondaPrompt或终端中运行以下命令:condarc文件通常位于用户主目录下(例如上图中的C:\Users\Administrator\.condarc),使用文本编辑器打开,默认内容如下:condaconfig--setshow_channel_urlsyescondarc文件内默认的内容Miniconda默认的镜像源及其配置文件位置为Miniconda配置国内镜像源以配置清华大学开源软件镜像站作为镜像源为例,将.condarc中的内容替换为以下内容,然后保存并关闭.condarc文件。channels:
-defaultsshow_channel_urls:truedefault_channels:
-/anaconda/pkgs/main
-/anaconda/pkgs/r
-/anaconda/pkgs/msys2custom_channels:
conda-forge:/anaconda/cloud
msys2:/anaconda/cloud
bioconda:/anaconda/cloud
menpo:/anaconda/cloud
pytorch:/anaconda/cloudssl_verify:true再次通过运行以下命令:condainfo添加后的镜像源为pip配置国内镜像源(2)为pip配置国内镜像源pip是一个Python包安装与管理工具,提供了对Python包的查找、下载、安装、卸载的功能。当我们通过pip临时使用镜像源安装第三方库时,可以通过-i参数指定镜像源地址(以清华大学镜像源为例)。pipinstall包名称
-i/pypi/simple/例如,安装python的绘图库时,可以通过下面的命令。pipinstallmatplotlib-i/pypi/simple/为了方便使用,可以为pip永久配置镜像源,修改pip的配置文件来配置国内镜像源。进入Miniconda的命令提示符,运行以下命令来设置pip的全局索引URL为清华大学开源软件镜像站的Python包索引,告诉pip从清华大学开源软件镜像站下载Python包。pipconfigsetglobal.index-url/simple任务二
计算机视觉开发环境搭建【项目准备】
虚拟环境创建--新建虚拟环境由于不同的工程项目可能需要不同的环境,因此,需要创建不同的虚拟环境以便于管理项目。可以使用Conda进行虚拟环境管理,进行虚拟环境的创建、激活、删除以及管理等操作。命名功能condaenvlist查看现有的虚拟环境condacreate-n环境名称python=版本号创建虚拟环境condaactivate环境名称激活虚拟环境condaenvremove-n环境名称删除虚拟环境condainstall包名称pipinstall包名称在虚拟环境中安装依赖包condalist查看当前虚拟环境中已安装的软件包condaactivate推出虚拟环境condacreate-n新环境名称
--clone环境名称克隆虚拟环境Conda常用的包管理命令【项目准备】虚拟环境创建--新建虚拟环境在AncondaPrompt中使用下面的命令查看已有的虚拟环境,执行命令后可以看到,此时仅有base环境。condaenvlist创建一个名为“CV”、python版本为3.10的虚拟环境。执行命令,安装过程中,需要输入“y”以继续执行。虚拟环境安装过程虚拟环境安装完成【项目准备】
虚拟环境创建--新建虚拟环境再次使用命令查看已有的虚拟环境,可以看到,此时除了base环境,还有我们新建的名为“CV”的虚拟环境condaenvlist从图可以看出,该虚拟环境会默认在Miniconda的安装路径下的envs文件夹中。我们需要记住虚拟环境的安装位置,以备后续为Pycharm添加解释器或添加外部工具时使用。创建的虚拟环境虚拟环境的存放位置【项目准备】虚拟环境创建--激活虚拟环境执行命令下面的命令激活虚拟,可以看到,环境激活后命令行工具中代码开头由(base)变为我们创建的虚拟环境(CV)。condaactivateCV激活的虚拟环境【项目准备】虚拟环境创建--安装相关依赖包项目的运行使用可能涉及各种依赖包,例如本课程使用了OpenCV、PyQT5等,需要依次进行安装使用。我们可以使用命令查看虚拟环境中已安装的依赖包及相关信息,并根据实际需要进行依赖包的安装、升级等操作。执行下面的命令,可以列出虚拟环境已安装的软件包列表及相关信息。condalist虚拟环境的依赖库列表【项目准备】
虚拟环境创建--激活虚拟环境(1)安装OpenCV在创建的虚拟环境中使用下面的命令安装OpenCV及其扩展库。pipinstallopencv-pythonpipinstallopencv-contrib-python在我们使用命令安装相关库时,若不指定版本,则默认安装最新版本,如果我们想安装特定版本的依赖包,可以命令中进行指定。例如:pipinstallopencv-python==6pipinstallopencv-contrib-python==6
opencv-python的安装过程opencv-contrib-python的安装过程【项目准备】虚拟环境创建--激活虚拟环境(2)安装PyQt5在创建的虚拟环境中使用下面的命令安装PyQt5及其工具包。若不指定版本,则默认安装最新版本。pipinstallPyQt5pipinstallPyQt5-toolsPyQt5的安装过程PyQt5-tools的安装过程【项目准备】虚拟环境创建--激活虚拟环境(1)安装JupyterLab在创建的虚拟环境中使用下面的命令安装JupyterLab。若不指定版本,则默认安装最新版本。安装完成后,在创建的虚拟环境中使用下面的命令启动JupyterLab。pipinstalljupyterlabjupyter-lab
opencv-python的安装过程opencv-contrib-python的安装过程JupyterLab的软件界面【项目准备】虚拟环境创建--激活虚拟环境默认情况下,JupyterLab只有自带的主环境,对应于conda中的base,而无法显示以及切换已经创建好的虚拟环境(例如我们创建的CV环境),接下来我们通过下面的配置解决这一问题。首先,在CV虚拟环境中安装ipykernel。pipinstallipykerne然后,将虚拟环境写入JupyterLab的kernel中,命令格式为:python-mipykernelinstall--user--name虚拟环境名--display-name虚拟环境名第1个虚拟环境名表示已经创建好的虚拟环境名称,第2个虚拟环境名表示想要其在JupyterLab的kernel列表中显示的名称。python-mipykernelinstall--user--nameCV--display-namecv_env在我们创建的虚拟环境CV中执行以上命令。将把我们创建好的CV虚拟环境写入到JupyterLab的kernel中,名称显示为cv_env。将CV虚拟环境写入到Jupyter的kernel中显示创建的虚拟环境【项目准备】Pycharm的安装及配置--下载Pycharm1.打开浏览器,使用网址“/”跳转到JETBRAINS官网,点击主页的“DevelopersTools”找到Pycharm并点击。2.点击“Download”跳转到下载页,下载社区版即可3.点击下载页的“Othersversions”,然后根据自己的需求选择相应的版本并下载下载历史版本查找历史版本查找PyChamIDEsJETBRAINS官网【项目准备】Pycharm的安装及配置--安装Pycharm1.双击已经下载好的Pycharm社区版图标,进入安装页面,点击下一步。2.选择安装路径,尽量不要安装在C盘里,选择好安装目录之后点击下一步。3.选择创建桌面快捷方式、创建关联、自动添加环境变量,方便以后可以直接从桌面上查找,点击下一步。4.选择开始菜单目录时,系统默认选择JetBrain,无需操作,点击安装,需要耐心等待几分钟,直至安装完成。Pycharm安装选择开始菜单目录Pycharm安装选项Pycharm安装目录设置Pycharm安装向导【项目准备】Pycharm的安装及配置--配置Pycharm解释器1.打开Pycharm,点击【open】,选择路径,打开提供的测试项目(TestProject)。依次点击【File】→【Settings】。Pycharm打开已有项目Pycharm显示当前项目查找Settings【项目准备】Pycharm的安装及配置--配置Pycharm解释器Pycharm查找添加解释器按钮Pycharm添加解释器过程Pycharm成功添加解释器2.在【Project:TestProject】下,选择【PythonInterpreter】,点击【AddInterrupt】,然后点击小齿轮选择【Existing】,将创建的Miniconda虚拟环境下的python.exe添加进来。虚拟环境的存放路径可通过以下方式查看。然后点击OK完成解释器的添加。【项目准备】Pycharm的安装及配置-测试Pycharm是否安装配置成功点击pycharm的项目运行按钮,若能够打开名称为“test”的窗口,能代表Pycharm安装配置成功。(注意:前提是图片的读取路径设置正确)至此,Pycharm的安装及配置成功完成。Pycharm运行项目成功运行项目【项目准备】PyQt5安装配置及简单使用1.安装PyQt5首先需要安装PyQt5及其工具包,我们在【任务2】中已介绍过安装方法,不再赘述。2.配置Pycharm的Externaltools(1)添加QTDesigner打开Pycharm,依次点击【File】→【Settings】在【Tools】下,选择【ExternalTools】,然后点击“+”按钮创建工具。弹出的菜单中,需要填写的三个参数:●Name:填写QTDesigner●Program:选择"designer.exe"的安装⽬录。路径为:%Python_path%\Lib\sitepackages\qt5_applications\Qt\bin\designer.exe。由于我们将PyQt5安装在了Miniconda新建的虚拟环境CV中,因此只需要先找到虚拟环境的位置,然后再根据后续路径找到designer.exe即可。例如:D:\Miniconda3\envs\CV\Lib\site-packages\qt5_applications\Qt\bin\designer.exe●Workingdirectory:填写$ProjectFileDir$
【项目准备】PyQt5安装配置及简单使用添加QTDesigner【项目准备】PyQt5安装配置及简单使用(2)添加PyUIC参照添加QTDesigner的方法添加PyUIC,需要填写四个参数:●Name:填写PyUIC●Program:选择"Pyuic.exe"的安装目录。路径为:%Python_path%\Scripts\pyuic5.exe同样的,先找到虚拟环境的位置,然后再根据后续路径找pyuic5.exe即可。例如:D:\Miniconda3\envs\CV\Scripts\pyuic5.exe●Arguments:填写$FileName$-o$FileNameWithoutExtension$.py●Workingdirectory:填写$ProjectFileDir$添加PyUIC
QTDesigner和PyUIC添加完成后【项目准备】PyQt5安装配置及简单使用3.使用PyQt5设计一个简单的UI界面(1)使用QTDesigner进行界面布局设计点击Pycharm的Tools,点击ExternalTools里面的QTDesigner,会跳转到QT界面。点击【创建】按钮创建一个“MainWindow”。拖动组件进行界面设计。下图创建了一个最简单的helloWorld!界面,保存后,会在文件夹中生成ui文件。启动图QTDesignerQTDesigner界面QTDesigner保存UI文件【项目准备】PyQt5安装配置及简单使用3.使用PyQt5设计一个简单的UI界面(2)使用PyUIC将UC文件转换成python文件点击Pycharm的Tools,点击ExternalTools里面的PyUIC,将.uc⽂件转换成.py⽂件。转换成功(TestUI.ui转换成TestUI.py),生成的代码如下图所示。启动PyUIC转换后的python文件【项目准备】PyQt5安装配置及简单使用3.使用PyQt5设计一个简单的UI界面(3)代码设计1)导入库fromPyQt5.QtWidgetsimportQApplication,QMainWindowimportsys2)主类继承QMainwindow⽗类,并初始化类:classUi_MainWindow(QMainWindow):#添加构造函数def__init__(self):super().__init__()
self.setupUi(self)
self.retranslateUi(self)【项目准备】PyQt5安装配置及简单使用3.使用PyQt5设计一个简单的UI界面3)添加启动语句(详细代码见课程资源包)if__name__=='__main__':app=QApplication(sys.argv)MainWindow1=QMainWindow()ui=Ui_MainWindow()ui.setupUi(MainWindow1)MainWindow1.show()sys.exit(app.exec_())4)代码修改完成之后,运行代码如下拓展任务1.跨平台迁移将开发环境从当前平台(如Windows)迁移到其他平台(如linux),记录在迁移过程中遇到的问题,如依赖库的安装、环境变量的设置等方面的差异。通过解决这些问题,掌握不同操作系统下配件和配置计算机视觉开发环境的技能。2.集成深度学习框架选择一个流行的深度学习框架(如PyTorch或TensorFlow),将其集成到已新搭建的计算机视觉开发环境中。研究如何在该框架下使用预训练的深度学习模型(如用于图像分类的ResNet模型)进行计算机视觉任务。为后续实现传统计算机视觉方法与深度学习技术的结合打下基础。项目二
图像浏览与编辑工具开发《计算机视觉应用开发》【项目导引】在信息时代,数字图像已成为信息传递与交流不可或缺的重要组成部分。它们直观地展示了世界的多样性和复杂性,比文字更生动、更具体地传达了信息。数字图像处理技术是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的技术,它的重要性源于其广泛的应用领域。在医疗领域,它能帮助医生更准确地诊断疾病;在安防监控中,它能提高安全防护能力;在娱乐领域,它能让照片和视频更加美观。此外,数字图像处理技术在航天航空、工业检测、军事公安、通信工程等领域也发挥着重要作用。本项目聚焦于数字图像处理技术,旨在打造一个简单的图像浏览与编辑工具。通过本项目实践,助力同学们深度掌握计算机视觉技术在实际项目中的开发流程,熟练运用相关工具,提升计算机视觉领域的实践能力与问题解决能力。【学习指导】知识目标技能目标(1)开发出具有缩放、旋转、镜像功能的图像浏览工具,并能实现图像的快速加载与流畅显示;(2)支持多种图像格式的操作,对图像进行精确编辑和保存;(3)会使用QT设计开发简单的界面程序。3(1)熟练运用OpenCV相关函数进行图像基本操作;(2)透彻掌握图像缩放、旋转、镜像等几何变换的数学原理和算法实现;(3)理解图像像素、通道等概念在操作中的应用。知识目标(1)解决问题能力:学生应该能够使用基本的图像处理技术解决实际问题,锻炼将所学技术实际应用的能力。(2)创新思维:鼓励学生了解学习计算机视觉新技术、新应用,培养创新思维。素养目标【项目描述】小王是一名热爱科技的大学生,一天在校园里听到一场关于计算机视觉技术处理图像的讲座。讲座中提到了利用计算机视觉技术读取并处理数字图像的内容。某天,小王电脑上的图像浏览器突然无法使用了,脑海中突然浮现出一个想法:自己能否运用所学的计算机视觉的工具,自己开发一个简单的图像浏览与编辑工具,实现对图像的基本操作。请你帮助小王完成该任务。【项目分析】实现图像读取、显示、保存等基本操作;01进行图像的几何变换,如缩放、翻转、仿射、旋转透视;02进行界面设计与功能实现。03任务一
图像的基本操作【知识链接】--图像基本操作图像打开在利用OpenCV进行图像处理时,首要操作步骤是通过其提供的imread()函数完成图像载入。imread()函数作为核心接口,支持从指定文件路径加载图像数据,为后续处理流程(如特征提取、变换操作等)构建基础输入层。通过调用cv2.imread()并传入有效图像路径参数,即可实现像素矩阵的数字化读取,为后续的计算机视觉算法实施提供数据载体。其语法格式如下:image:imread()方法的返回值,返回的是读取到的图像。filename:要读取的图像的完整文件名。例如,要读取当前项目目录下的2.1.jpg,filename的值为"2.1.jpg"(双引号是英文格式的)。flags:读取图像颜色类型的标记。当flags的默认值为1时,表示读取的是彩色图像,此时的flags值可以省略;当flags的值为0时,表示读取的是灰度图像(如果读取的是彩色图像,也将转换为与彩色图像对应的灰度图像)image=cv2.imread(filename,flags)灰度图像是一种每个像素都是从黑到白,被处理为256个灰度级别的单色图像。256个灰度级别分别用0(纯黑色)~255(纯白色)的数值表示。注意【知识链接】--图像基本操作练习:读取当前项目目录下的图像。(实例位置:素材与实例\Project2\Example2\Example2-1.py)在PyCharm中的Project2\Example2项目下,有一幅名为2.1.jpg的图像。在Example2-1.py文件中,先使用imread()方法读取2.1.jpg,再使用print()方法打印2.1.jpgimportcv2#读取2.1.jpg,等价于image=cv2.imread("2.1.jpg")image=cv2.imread("2.1.jpg",1)print(image)#打印2.1.jpgProject2\Example2项目下的2.1.jpg打印2.1.jpg(输出的数字是2.1.jpg的部分像素值)【知识链接】--图像基本操作练习:如果2.1.jpg在D盘的根目录下,应该如何使用imread()方法进行读取呢?只需将实例2代码:image=cv2.imread("2.1.jpg")
修改为如下代码:image=cv2.imread("D:/2.1.jpg")#路径中不能出现中文"D:/2.1.jpg"等价于"D:\\2.1.jpg"。注意【知识链接】--图像基本操作图像显示为突破纯数字矩阵的抽象认知局限,OpenCV构建了可视化函数,将图像显示出来。imshow()函数创建显示窗口渲染图像内容,配合waitKey()实现键盘交互控制,最终调用destroyAllWindows()完成资源释放,形成完整的图像呈现-交互-清理标准化流程。(1)imshow()方法用于显示图像,其语法格式如下:cv2.imshow(winname,mat)参数说明:winname:显示图像的窗口名称。mat:要显示的图像【知识链接】--图像基本操作图像显示(2)waitKey()方法用于等待用户按下键盘上按键的时间。当用户按下键盘上的任意按键时,将执行waitKey()方法,并且获取waitKey()方法的返回值。其语法格式如下:retval=cv2.waitKey(delay)参数说明:retval:与被按下的按键对应的ASCII码。例如,Esc键的ASCII码是27,当用户按Esc键时,waitKey()方法的返回值是27。如果没有按键被按下,waitKey()方法的返回值是-1。delay:等待用户按下键盘上按键的时间,单位为毫秒(ms)。当delay的值为负数、0或者空时,表示无限等待用户按下键盘上按键的时间。(3)destroyAllWindows()方法用于销毁所有正在显示图像的窗口,其语法格式如下:cv2.destroyAllWindows()【知识链接】--图像基本操作练习显示图像。(实例位置:素材与实例\Project2\Example2\Example2-2.py)编写一个程序,使用imread()方法、imshow()方法、waitKey()方法destroyAllWindows()方法,读取并显示Project2\Example2项目下的2.1.jpg,代码如下:importcv2image=cv2.imread("2.1.jpg")#读取2.1.jpgcv2.imshow("garden",image)#在名为garden的窗口中显示2.1.jpgcv2.waitKey()#按下任何键盘按键后cv2.destroyAllWindows()#销毁所有窗口显示2.1.jpg窗口名称是中文时出现乱码(1)图像显示的窗口名称不能使用中文(例如,以上实例4行代码中的"garden"修改为"公园"),否则会出现如图2-1-4所示的乱码。(2)若使图像能够正常显示,要在cv2.imshow()之后紧跟着cv2.waitKey()。注意【知识链接】--图像基本操作
图像保存在实际工程实践中,当完成对数字图像的算法处理后,开发者常需将生成的图像矩阵持久化存储。为此,OpenCV框架的cv2模块封装了imwrite()函数,通过规范化文件路径参数将图像数据写入存储介质。本方法的第一个参数接受包含目标目录结构和文件扩展名的完整路径字符串,第二个参数为NumPy数组形式的图像数据矩阵,系统将根据文件扩展名自动选择对应的编解码器进行数据压缩存储(如.png采用无损压缩,.jpg使用有损压缩)。需注意的是:若目标路径包含未创建的嵌套目录,该方法不会自动创建文件夹;当存在同名文件时,原始文件将被静默覆盖,且方法通过布尔返回值告知执行状态。cv2.imwrite(filename,img)参数说明:filename:保存图像时所用的完整路径。img:要保存的图像。【知识链接】--图像基本操作练习保存图像。(实例位置:素材与实例\Project2\Example2\Example2-3.py)编写一个程序,把Project2\Example2项目下的2.1.jpg保存为E盘根目录下的、Pictures文件夹中的1.jpg,代码如下:importcv2image=cv2.imread("2.1.jpg")#读取2.1.jpg#把2.1.jpg保存为E盘根目录下的、Pictures文件夹中的1.jpgcv2.imwrite("E:/Pictures/1.jpg",image)保存在E盘根目录下Pictures文件夹中的1.jpg运行上述代码前,确认E盘根目录下有Pictures文件夹。如果没有,在E盘根目录下新建一个空的Pictures文件夹。运行上述代码后,打开E盘根目录下的Pictures文件夹,即可看到1.jpg。【知识链接】--图像基本操作
获取图像属性在数字图像处理实践中,开发人员常需动态获取图像的大小、类型等图像属性。为此,OpenCV提供了shape、size和dtype3个常用属性,具体含义分别如下。需注意的是:若目标路径包含未创建的嵌套目录,该方法不会自动创建文件夹;当存在同名文件时,原始文件将被静默覆盖,且方法通过布尔返回值告知执行状态。shape:如果是彩色图像,那么获取的是一个包含图像的水平像素、垂直像素和通道数的数组,即(垂直像素,水平像素,通道数);如果是灰度图像,那么获取的是一个包含图像的水平像素和垂直像素的数组,即(垂直像素,水平像素)。size:获取的是图像包含的像素个数,其值为“水平像素×垂直像素×通道数”。灰度图像的通道数为1。dtype:获取的是图像的数据类型垂直像素指的是垂直方向上的像素,水平像素指的是水平方向上的像素。有关像素、灰度图像和通道的内容。注意【知识链接】--图像基本操作练习分别获取彩色图像和灰度图像的属性。(实例位置:素材与实例\Project2\Example2\Example2-4.py)编写一个程序,把Project2\Example2项目下的2.1.jpg保存为E盘根目录下的、Pictures文件夹中的1.jpgimportcv2image_Color=cv2.imread("2.1.jpg")#读取2.1.jpgprint("获取彩色图像的属性:")print("shape=",image_Color.shape)#打印彩色图像的(垂直像素,水平像素,通道数)print("size=",image_Color.size)#打印彩色图像包含的像素个数print("dtype=",image_Color.dtype)#打印彩色图像的数据类型image_Gray=cv2.imread("2.1.jpg",0)#读取与2.1.jpg(彩色图像)对应的灰度图像print("获取灰度图像的属性:")print("shape=",image_Gray.shape)#打印灰度图像的(垂直像素,水平像素)print("size=",image_Gray.size)#打印灰度图像包含的像素个数print("dtype=",image_Gray.dtype)#打印灰度图像的数据类型获取并打印彩色图像的属性垂直像素指的是垂直方向上的像素,水平像素指的是水平方向上的像素。有关像素、灰度图像和通道的内容。注意【知识链接】--图像几何变换图像缩放图像缩放指通过改变图像的大小来改变图像的形状,“缩”表示缩小,“放”表示放大,OpenCV提供的resize()方法可以随意更改图像的大小比例,实现了多尺度空间映射功能,其语法如下:dst=cv2.resize(src,dsize,fx,fy,interpolation)参数说明:src:原始图像。dsize:输出图像的大小,格式为(宽,高),单位为像素。fx:可选参数。水平方向的缩放比例。fy:可选参数。垂直方向的缩放比例。interpolation:可选参数。缩放的插值方式。在图像缩小或放大时需要删减或补充像素,该参数可以指定使用哪种算法对像素进行增减。建议使用默认值。【知识链接】--图像基本操作练习分别获取彩色图像和灰度图像的属性。(实例位置:素材与实例\Project2\Example2\Example2-4.py)编写一个程序,把Project2\Example2项目下的2.1.jpg保存为E盘根目录下的、Pictures文件夹中的1.jpgimportcv2image_Color=cv2.imread("2.1.jpg")#读取2.1.jpgprint("获取彩色图像的属性:")print("shape=",image_Color.shape)#打印彩色图像的(垂直像素,水平像素,通道数)print("size=",image_Color.size)#打印彩色图像包含的像素个数print("dtype=",image_Color.dtype)#打印彩色图像的数据类型image_Gray=cv2.imread("2.1.jpg",0)#读取与2.1.jpg(彩色图像)对应的灰度图像print("获取灰度图像的属性:")print("shape=",image_Gray.shape)#打印灰度图像的(垂直像素,水平像素)print("size=",image_Gray.size)#打印灰度图像包含的像素个数print("dtype=",image_Gray.dtype)#打印灰度图像的数据类型获取并打印彩色图像的属性垂直像素指的是垂直方向上的像素,水平像素指的是水平方向上的像素。有关像素、灰度图像和通道的内容。注意【知识链接】--图像基本操作练习分别获取彩色图像和灰度图像的属性。将一个图像按照宽90像素、高90像素的大小进行缩小,再按照宽500像素、高500像素的大小进行放大,代码如下:importcv2img=cv2.imread("2.1.jpg")#读取图像dst1=cv2.resize(img,(90,90))#按照宽90像素、高90像素的大小进行缩放dst2=cv2.resize(img,(500,500))#按照宽500像素、高500像素的大小进行缩放cv2.imshow("img",img)#显示原图cv2.imshow("dst1",dst1)#显示缩放图像cv2.imshow("dst2",dst2)cv2.waitKey()#按下任何键盘按键后cv2.destroyAllWindows()#释放所有窗体原图缩小90*90像素放大500*500像素【知识链接】--图像几何变换图像缩放新图像宽度=round(fx×原图像宽度)新图像高度=round(fy×原图像高度)fx和fy参数实现缩放:使用fx参数和fy参数控制缩放时,dsize参数值必须使用None,否则fx和fy失效。fx参数和fy参数可以使用浮点值,小于1的值表示缩小,大于1的值表示放大。其计算公式为:【知识链接】--图像几何变换练习将图像按照指定比例进行缩放。(实例位置:素材与实例\Project2\Example2\Example2-6.py)
将一个图像宽缩小到原来的2/3、高缩小到原来的1/2,再将图像宽放大3倍,高也放大3倍。importcv2img=cv2.imread("2.1.jpg")#读取图像dst3=cv2.resize(img,None,fx=2/3,fy=1/2)#将宽缩小到原来的2/3、高缩小到原来的1/2dst4=cv2.resize(img,None,fx=3,fy=3)#将宽高扩大3倍cv2.imshow("img",img)#显示原图cv2.imshow("dst3",dst3)#显示缩放图像cv2.imshow("dst4",dst4)#显示缩放图像cv2.waitKey()#按下任何键盘按键后cv2.destroyAllWindows()#释放所有窗体原图宽缩小1/3、高缩小1/2放大400*400像素【知识链接】--图像几何变换图像翻转在计算机视觉的几何变换体系中,OpenCV通过cv2.flip()函数实现图像反射变换,沿水平方向被称为X轴,沿垂直方向被称为Y轴。图像沿着X轴或Y轴翻转之后,可以呈现出镜面或倒影的效果。实现语法如下:沿X轴翻转的效果沿Y轴翻转的效果dst=cv2.flip(src,flipCode)参数说明src:原始图像。dsize:输出图像的大小,格式为(宽,高),单位为像素。返回值说明:dst:翻转之后的图像。类型值含义0沿X轴翻转正数沿Y轴翻转负数同时沿X、Y轴轴翻转
flipCode类型及含义【知识链接】--图像几何变换原图沿Y轴翻转同时沿X轴、Y轴翻转沿X轴翻转importcv2
img=cv2.imread("2.1.jpg")#读取图像dst1=cv2.flip(img,1)#沿Y轴翻转dst2=cv2.flip(img,0)#沿X轴翻转dst3=cv2.flip(img,-1)#同时沿X轴、Y轴翻转cv2.imshow("img",img)#显示原图cv2.imshow("dst1",dst1)#显示翻转之后的图像cv2.imshow("dst2",dst2)cv2.imshow("dst3",dst3)cv2.waitKey()#按下任何键盘按键后cv2.destroyAllWindows()#释放所有窗体练习:同时实现不同种翻转效果。(实例位置:素材与实例\Project2\Example2\Example2-7.py)分别让图像沿Y轴翻转,沿X轴翻转,同时沿X轴、Y轴翻转,查看翻转的效果,代码如下:【知识链接】--图像几何变换仿射变换在计算机视觉的几何变换理论中,仿射变换是二维线性空间映射的核心操作,变换之后的图像仍然可以保持直线的“平直性”和“平行性”,也就是说原来的直线变换之后还是直线,平行线变换之后还是平行线。常见的仿射变换效果如图所示,包含平移、旋转和倾斜等操作。【知识链接】--图像几何变换仿射变换OpenCV通过cv2.warpAffine()方法实现仿射变换效果,其语法如下:dst=cv2.warpAffine(src,M,dsize,flags,borderMode,bordeValue)参数说明src:原始图像。M:也被叫作仿射矩阵,一个2行3列的矩阵,根据此矩阵的值变换原图中的像素位置。格式为M=[[a,b,c],[d,e,f]]dsize:输出图像的尺寸大小。flags:可选参数,插值方式,建议使用默认值。borderMode:可选参数,边界类型,建议使用默认值。borderValue:可选参数,边界值,默认为0,建议使用默认值。返回值说明:dst:经过反射变换后输出图像【知识链接】--图像几何变换仿射变换--平移平移是指通过改变图像的位置来改变图像的形状,就是让图像中的所有像素同时沿着水平或垂直方向移动。实现这种效果只需要将M的值按照以下格式进行设置:M=[[1,0,水平移动的距离],[0,1,垂直移动的距离]]原始图像的像素就会按照以下公式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纳米反射隔热施工方案(3篇)
- 考勤管理系统施工方案(3篇)
- 营销人员业务奖励方案(3篇)
- 观澜墅-营销方案(3篇)
- 轻质块冬季施工方案(3篇)
- 铁岭设备保温施工方案(3篇)
- 饭店春节套餐营销方案(3篇)
- 精神科护理安全不良事件分析
- 面神经炎治疗指南
- 壳牌创新型作业许可体系课件
- 常见恶性肿瘤联合筛查专家共识(2025版)
- 设计单位安全生产管理制度
- DB35∕T 1963-2021 营造林工程定额编制规范
- 外部审核管理办法
- 消化道出血的中医课件
- 干燥综合征间质性肺炎
- Vensim中文学习手册
- 中国电信2024年燎原计划跨省联训(AI专业)考试含答案
- 做最勇敢的自己
- 球囊面罩通气术讲解
- 企业法务培训课件
评论
0/150
提交评论