版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章
计算机视觉与OpenCV入门计算机视觉应用开发案例教程目录CONTENT1.1计算机视觉概述011.2OpenCV简介021.3OpenCV(Python)环境安装与配置031.4你的第一个OpenCV程序04任务实践05拓展实训06本章小结07课后习题08手机解锁时的人脸识别;在当今人工智能时代,计算机视觉技术正悄然改变着我们的生活自动驾驶汽车对路况的感知;医院里医生借助影像技术诊断疾病;引言这些场景背后都离不开计算机视觉的支撑。引言作为一款开源、高效的计算机视觉库,凭借其丰富的接口、跨平台特性和强大的功能,成为了学习和应用计算机视觉技术的重要工具。OpenCV(OpenSourceComputerVisionLibrary)引言本模块认识计算机视觉的基本概念与应用价值,了解OpenCV的发展历程和核心功能;完成Python环境下OpenCV的安装配置,并编写第一个OpenCV程序。建立对计算机视觉与OpenCV的初步认知。工作情境如果读者朋友想入门计算机视觉相关工作工作情境智能制造里的零件质检智慧城市中的安防监控完成图像的基础读写比如做图像数据处理、视觉应用开发,那OpenCV绝对是绕不开的核心工具。本模块会从你熟悉的场景(比如手机拍照的图像处理)入手,带你一步步配置环境、写出第一个OpenCV程序。不用一开始就纠结复杂技术,先把“读图、显图、存图”这些基础操作练熟,你就能慢慢明白:工作情境这些简单技能,其实正贴合当下产业对“视觉技术落地”的基础需求,为后续学更实用的本领打牢底子。1.1计算机视觉概述1.1.1计算机视觉的定义1.1.1计算机视觉的定义核心目标:让计算机具备“看懂”图像或视频的能力——就像人类通过眼睛获取视觉信息,再通过大脑处理理解场景一样,计算机通过摄像头、图像传感器等设备获取图像数据,再通过算法对数据进行分析,最终实现对场景内容的识别、检测、跟踪或分割。计算机视觉是人工智能领域的重要分支计算机视觉要解决的问题从一张照片中识别出“这是一只猫”(识别)在监控视频中找到“行人的位置”(检测)跟踪视频里“汽车的运动轨迹”(跟踪)让计算机从图像中“提取有用信息”并“做出判断”。1.1.1计算机视觉的定义1.1.2计算机视觉的典型应用场景1.1.2计算机视觉的典型应用场景•智能监控摄像头可实时检测画面中的异常行为(如打架、闯入禁区),并自动报警;•同时能通过人脸识别技术比对人员信息,协助警方追捕嫌疑人。安防监控领域计算机视觉技术已广泛应用于多个行业,以下是几个典型场景,帮助大家直观理解其价值:自动驾驶汽车通过车载摄像头、激光雷达等设备获取路况信息,计算机视觉算法可识别道路标线、行人、其他车辆、交通信号灯等,为车辆决策提供依据(如判断是否刹车、转弯)。自动驾驶领域•医生借助计算机视觉技术分析CT、MRI等医学影像,可更精准地定位肿瘤、识别病变区域,提高诊断效率和准确性;•例如,乳腺癌筛查中,计算机可辅助检测乳腺影像中的微小钙化点。医疗影像领域•手机中的“美颜相机”通过人脸关键点检测调整五官比例;•“扫码支付”通过二维码识别解析支付信息;•电商平台的“以图搜物”通过图像特征匹配找到相似商品。日常生活领域1.1.2计算机视觉的典型应用场景如图1-1所示,展示了计算机视觉在安防监控、自动驾驶、医疗病变影像识别和手机支付领域的应用场景,类似的场景不胜枚举,它们早已在不经意间嵌入了人类社会的方方面面。头脑风暴:请同学们讨论现实生活中还有哪些计算机视觉的应用场景?未来可能出现哪些应用场景?计算机视觉技术已广泛应用于多个行业,以下是几个典型场景,帮助大家直观理解其价值:拓展阅读计算机视觉在我国的发展与应用及其带来的思考近年来,我国在计算机视觉领域实现了从“跟跑”到“并跑”再到部分“领跑”的跨越式发展。以商汤科技、旷视科技、海康威视等企业为代表,我国团队在深度学习驱动的图像识别、目标检测、语义分割等核心技术上持续突破,相关算法多次在ImageNet、COCO等国际权威数据集竞赛中斩获佳绩,打破了早期国外技术垄断的局面;在国家战略与民生领域,技术落地更是成果显著——疫情期间,基于计算机视觉的“人脸识别+体温监测”设备快速部署于全国机场、车站,为精准防控提供关键支撑;智慧农业中,作物病虫害视觉识别系统帮助农户实现“精准植保”,助力乡村振兴;医疗领域,计算机辅助诊断系统可对肺部CT、眼底图像进行高效分析,让基层医院也能享受优质诊断资源;甚至在航天工程中,视觉技术还为航天器在轨故障检测、月球/火星探测车环境感知提供了技术保障。这些发展不仅彰显了我国科技自立自强的实力,更体现了“技术服务国家、惠及民生”的核心导向,让计算机视觉真正成为推动社会进步的“硬核力量”。拓展阅读计算机视觉在我国的发展与应用及其带来的思考我国计算机视觉领域的突破,离不开一代代科研工作者“敢啃硬骨头、勇攀技术高峰”的奋斗精神——从基础算法的反复迭代到应用场景的深度打磨,从实验室里的理论验证到田间地头的落地测试,每一项成果都凝聚着对国家科技发展的责任与担当。读者们通过学习,不仅要成为技术的掌握者,更要做未来科技发展的参与者:在学习计算机视觉原理与技能时,不妨多思考“这项技术能为我国哪些领域解决痛点”“如何让技术更贴合国情需求”,始终将“科技报国”的信念融入学习过程,未来用扎实的技术能力为我国人工智能产业高质量发展贡献力量。拓展阅读计算机视觉在我国的发展与应用及其带来的思考当然,在拥抱计算机视觉技术便利的同时,我们更需树立“科技向善”的底线思维。我国近年先后出台《新一代人工智能伦理规范》《数据安全法》等政策,明确要求技术发展需兼顾隐私保护、算法公平性与社会公共利益——比如人脸识别技术在便捷身份核验的同时,需防范数据泄露风险;智能监控系统在提升管理效率的同时,需避免过度监控侵犯权益。这就要求我们在学习过程中,不仅要练“技术硬功”,更要修“责任内功”:既要掌握图像处理、模型训练的专业能力,也要主动思考技术应用的伦理边界,培养“技术能力与责任担当并重”的职业素养,成长为既懂技术、又有温度的人工智能从业者,让技术始终朝着服务人类、造福社会的方向发展。1.1.3计算机视觉与数字图像处理的关系1.1.3计算机视觉与数字图像处理的关系很多同学会疑惑:计算机视觉和“数字图像处理”有什么区别?简单来说,数字图像处理是计算机视觉的基础,两者是“工具与目标”的关系:数字图像处理更侧重于“对图像本身的操作”,比如将彩色图像转为灰度图、去除图像中的噪声、增强图像对比度等,核心是“改善图像质量”或“提取图像特征”(如边缘、角点)。计算机视觉则更侧重于“对图像内容的理解”,它会利用数字图像处理得到的特征,进一步分析图像中的目标(如“这个特征对应的是人脸”“那个特征对应的是汽车”),最终实现对场景的判断。1.1.3计算机视觉与数字图像处理的关系很多同学会疑惑:计算机视觉和“数字图像处理”有什么区别?简单来说,数字图像处理是计算机视觉的基础,两者是“工具与目标”的关系:举个例子:要实现“人脸识别”,首先需要通过数字图像处理技术(如灰度化、滤波去噪)预处理人脸图像,再提取人脸的特征(如眼睛、鼻子的位置);而计算机视觉则负责利用这些特征,判断“这张人脸属于谁”,完成识别任务。1.2OpenCV简介1.2.1OpenCV的发展历程1.2.1OpenCV的发展历程OpenCV最初由英特尔公司于1999年发起开发,2000年发布第一个正式版本。经过20多年的发展,OpenCV已从最初的简单图像库,成长为支持多平台、多语言(C++、Python、Java等)、功能覆盖计算机视觉全领域的开源项目,目前由OpenCV基金会维护。OpenCV的版本迭代中,有两个重要的版本节点需要关注:OpenCV3.x系列:2015年发布,首次引入“contrib”扩展模块(包含SIFT、SURF等专利算法),同时加强了对深度学习的支持,是早期学习和应用的主流版本。OpenCV4.x系列:2018年发布,优化了代码结构,移除了部分过时接口,增强了对GPU加速的支持,同时完善了深度学习模块(如支持更多预训练模型),目前是推荐使用的版本。本书将基于OpenCV4.x版本(具体为4.12.0)进行讲解。1.2.2OpenCV的核心功能模块1.2.2OpenCV的核心功能模块OpenCV的核心模块,包含图像数据结构(如Mat类,用于存储图像像素)、基本数学运算(如矩阵操作、距离计算)等基础功能,是其他模块的依赖。1.core模块OpenCV的功能通过“模块”(Module)的形式组织,不同模块对应不同的计算机视觉任务。对于初学者,无需掌握所有模块,重点关注以下核心模块即可:图像处理模块,提供图像灰度化、二值化、滤波去噪、边缘检测、几何变换等常用操作,是数字图像处理的核心工具。2.imgproc模块高层图形用户界面模块,用于图像的读取(imread)、显示(imshow)、保存(imwrite),以及窗口、滑动条的创建,是与用户交互的关键模块。3.highgui模块特征检测与匹配模块,包含Harris角点检测、SIFT、ORB等特征提取算法,以及特征匹配相关接口,是目标识别、图像拼接的基础。4.features2d模块OpenCV的功能通过“模块”(Module)的形式组织,不同模块对应不同的计算机视觉任务。对于初学者,无需掌握所有模块,重点关注以下核心模块即可:目标检测模块,支持加载预训练的级联分类器(如人脸检测、眼睛检测模型),可快速实现常见目标的检测任务。5.objdetect模块深度学习模块,支持加载TensorFlow、PyTorch等框架训练的模型,实现图像分类、目标检测等高级任务,是OpenCV与深度学习结合的重要接口。6.dnn模块1.2.2OpenCV的核心功能模块1.2.3OpenCV的官方资源学习OpenCV过程中,官方资源是最权威的参考资料,推荐大家收藏以下资源:1.2.3OpenCV的官方资源/,网站包含版本更新、功能介绍、官方文档入口等信息,是获取OpenCV最新动态的首选渠道。如图1-2所示,为OpenCV官方网站首页界面,可清晰看到“Documentation”(文档)、“Libraries”(库下载)等核心入口。1.OpenCV官方网站:学习OpenCV过程中,官方资源是最权威的参考资料,推荐大家收藏以下资源:1.2.3OpenCV的官方资源/,文档按版本分类(如4.12.0版本文档地址为/4.12.0/),包含模块接口说明、示例代码、算法原理等,是调试代码时的重要参考。2.OpenCV官方文档:学习OpenCV过程中,官方资源是最权威的参考资料,推荐大家收藏以下资源:1.2.3OpenCV的官方资源/opencv/opencv,开源项目的代码仓库,可获取源码、提交问题反馈,也能查看其他开发者贡献的示例,如图1-3所示。3.OpenCVGitHub仓库:注意:本书附带的素材库已为读者准备好了下载好的官方资源,读者也可以自行下载最新版本。1.3OpenCV(Python)环境安装与配置OpenCV(Python)环境安装与配置要使用Python编写OpenCV程序,首先需要完成“Python环境+OpenCV库”的安装配置。本节将详细讲解安装步骤,同时提供常见故障的排查方法。1.3.1配置Python环境若未安装,可从Python官方网站(/)下载对应系统(Windows/macOS/Linux)的安装包,安装时注意勾选“AddPythontoPATH”(将Python添加到系统环境变量),如图1-4所示,方便后续通过命令行调用Python。由于本书面向人工智能技术应用专业学生,默认大家已完成Python环境的安装(推荐Python3.7~3.10版本,兼容性最佳),本书选择Python3.9.7运行环境。1.3.1配置Python环境验证Python环境的步骤如下:1.3.1配置Python环境打开系统命令行工具(Windows:按下Win+R,输入cmd回车;macOS:启动台→其他→终端;Linux:直接打开终端)。1.在命令行中输入python--version(或python3--version,部分系统需区分Python2和Python3);1.若输出类似“Python3.9.7”的版本信息,说明Python环境已安装成功,如图1-5所示;若提示“python不是内部或外部命令”,则需重新检查Python安装时是否勾选“AddPythontoPATH”,或手动配置系统环境变量。1.3.2安装OpenCV-Python库Python环境验证通过后,可通过pip工具(Python自带的包管理工具)快速安装OpenCV-Python库。pip会自动下载并安装OpenCV的核心库及依赖,无需手动配置其他环境。1.3.2安装OpenCV-Python库具体安装步骤1.打开命令行工具(cmd),输入以下安装命令:#安装OpenCV核心库(包含core、imgproc、highgui等基础模块)pipinstallopencv-python若需要使用contrib扩展模块(如SIFT算法、人脸识别相关接口),可额外安装opencv-contrib-python库,命令如下:#安装OpenCV核心库+contrib扩展模块pipinstallopencv-contrib-pythonPython环境验证通过后,可通过pip工具(Python自带的包管理工具)快速安装OpenCV-Python库。pip会自动下载并安装OpenCV的核心库及依赖,无需手动配置其他环境。1.3.2安装OpenCV-Python库具体安装步骤1.打开命令行工具(cmd),输入以下安装命令:提示:安装时建议使用国内镜像源(如阿里云、清华大学镜像),可加快下载速度,以清华大学镜像命令为例,格式为:(推荐采用此方法,如图1-6所示)#用阿里云镜像安装opencv-contrib-pythonpipinstallopencv-contrib-python-i/pypi/simple/图1-6使用国内镜像源安装带有contrib扩展模块的opencv库Python环境验证通过后,可通过pip工具(Python自带的包管理工具)快速安装OpenCV-Python库。pip会自动下载并安装OpenCV的核心库及依赖,无需手动配置其他环境。1.3.2安装OpenCV-Python库具体安装步骤2.等待安装完成:命令执行后,pip会显示下载进度(如“Downloadingopencv_python-8-cp39-cp39-win_amd64.whl(45.3MB)”),安装成功后会提示“Successfullyinstalledopencv-python-8”(版本号可能因最新版变化)。如图1-37所示,为命令行安装OpenCV-Python的成功提示界面,红框标注安装成功的信息。图1-7命令行安装OpenCV-Python的成功提示界面,红框标注安装成功的信息1.3.3验证OpenCV安装结果安装完成后,需通过Python代码验证OpenCV是否能正常导入并使用,步骤如下:1.3.3验证OpenCV安装结果1.打开命令行工具,输入python(或python3)进入Python交互式环境(界面会显示“>>>”提示符)。若输出类似“OpenCV版本:4.12.0”的信息,说明OpenCV已成功安装并可正常使用如图1-8所示;若提示“ImportError:Nomodulenamed'cv2'”,则需重新检查安装命令是否正确,或尝试重启命令行工具后再次验证。2.在交互式环境中输入以下代码:#导入OpenCV库,约定简写为cv2importcv2#打印OpenCV版本号print("OpenCV版本:",cv2.__version__)图1-8显示OpenCV版本信息,证明库已成功安装并可正常使用1.3.4常见安装故障排查1.3.4常见安装故障排查1.故障1:pip命令无法使用症状:输入pip--version提示“pip不是内部或外部命令”。排查:①检查Python安装时是否勾选“AddPythontoPATH”;②手动添加Python的“Scripts”目录到系统环境变量(Windows:Python安装路径下的“Scripts”文件夹,如“C:\Python39\Scripts”)。2.故障2:安装速度过慢或下载中断症状:pip下载时进度停滞,或提示“Readtimedout”。排查:使用国内镜像源重新安装(参考1.4.2节的镜像源命令)。1.3.4常见安装故障排查3.故障3:安装后导入cv2提示“DLLloadfailed”(Windows系统)症状:importcv2时提示“ImportError:DLLloadfailedwhileimportingcv2”。排查:①检查Python版本与OpenCV版本是否匹配(如64位Python需安装64位OpenCV);②若系统缺少“VisualC++Redistributable”组件,可从微软官网下载安装(/zh-CN/cpp/windows/latest-supported-vc-redist?view=msvc-170)。1.3.5在conda虚拟环境中配置OpenCV环境除了直接在系统Python环境中安装OpenCV,推荐使用conda虚拟环境管理OpenCV依赖。conda是一个开源的包管理与环境管理工具,通过创建独立的虚拟环境,可避免不同项目之间的库版本冲突(例如A项目需要OpenCV3.4,B项目需要OpenCV4.6),尤其适合多项目开发场景。1.3.51.前提:安装Anaconda或Minicondaconda虚拟环境依赖Anaconda或Miniconda(轻量化版本),安装步骤如下:Anaconda(包含Python及常用科学计算库):官网/download,选择对应系统(Windows/macOS/Linux)的Python3.x版本;下载安装包:Miniconda(仅包含conda和Python):官网https://docs.conda.io/en/latest/miniconda.html,选择适合的版本。(1)安装:运行安装包,Windows系统注意勾选“AddAnaconda3tomyPATHenvironmentvariable”(添加到环境变量),macOS/Linux可默认安装。(2)验证:打开命令行,输入conda--version,输出类似“conda23.1.0”说明安装成功。1.3.52.创建并激活conda虚拟环境步骤如下打开AnacondaPrompt命令行,输入以下命令创建名为“cv_env”(可自定义)的虚拟环境,指定Python版本为3.9(兼容性佳):condacreate-ncv_envpython=3.9图1-9创建虚拟环境(1)创建虚拟环境:1.3.52.创建并激活conda虚拟环境(1)创建虚拟环境:步骤如下运行后会提示安装依赖,如图1-10所示,输入“y”确认,等待环境创建完成。图1-10虚拟环境待确认界面1.3.52.创建并激活conda虚拟环境(1)创建虚拟环境:步骤如下运行后会提示安装依赖,如图1-10所示,输入“y”确认,等待环境创建完成。(2)激活虚拟环境:虚拟环境创建成功后还需输入激活命令才能成功激活虚拟环境,如图1-11所示。Windows系统:condaactivatecv_envmacOS/Linux系统:sourceactivatecv_env图1-11激活虚拟环境激活成功后,命令行提示符前会显示“(cv_env)”,表示当前处于虚拟环境中。如图1-11所示。1.3.53.在虚拟环境中安装OpenCV方法1:通过conda安装(推荐,自动解决依赖)激活“cv_env”环境后,可通过两种方式安装OpenCV#安装OpenCV核心库condainstall-cconda-forgeopencv#若需要contrib扩展模块,安装opencv-contribcondainstall-cconda-forgeopencv-contrib-cconda-forge:指定从conda-forge渠道下载(该渠道的OpenCV版本更新及时);安装过程中输入“y”确认依赖安装,等待完成。1.3.53.在虚拟环境中安装OpenCV方法2:通过pip在conda环境中安装激活“cv_env”环境后,可通过两种方式安装OpenCV#先更新pippipinstall--upgradepip#安装OpenCVpipinstallopencv-contrib-python若conda安装速度慢,可在虚拟环境中使用pip安装(需确保已激活“cv_env”):建议配合国内镜像源(如-i/simple)加速下载。1.3.54.验证conda环境中的OpenCV激活“cv_env”环境后,输入python进入Python交互式环境,执行以下代码:importcv2print("OpenCV版本:",cv2.__version__)若输出版本信息(如“4.12.0”),说明虚拟环境中的OpenCV安装成功。如图1-12所示。图1-12验证conda环境中的OpenCV1.3.55.退出与删除虚拟环境通过conda虚拟环境管理OpenCV,可有效隔离不同项目的依赖,尤其适合课程学习中需要测试不同版本库的场景。后续模块的任务,推荐在独立的conda环境中完成,避免环境冲突。退出虚拟环境:condadeactivate(命令行提示符前的“(cv_env)”消失);删除虚拟环境(谨慎操作):condaremove-ncv_env--all,输入“y”确认删除。1.4你的第一个OpenCV程序你的第一个OpenCV程序掌握环境配置后,我们来编写第一个OpenCV程序——通过该程序,你将学会如何用OpenCV读取本地图像、在窗口中显示图像,以及保存处理后的图像,这是后续所有OpenCV项目的基础操作。1.4.1程序功能与核心函数本程序的核心功能的是:读取一张本地彩色图像,在窗口中显示图像,等待用户按键后关闭窗口,并将图像保存为新文件。1.4.1程序功能与核心函数1.cv2.imread():读取本地图像——语法:cv2.imread(filename,flags)cv2.IMREAD_COLOR(默认值,可简写为1):读取彩色图像,忽略Alpha通道(透明度);cv2.IMREAD_GRAYSCALE(可简写为0):读取灰度图像;cv2.IMREAD_UNCHANGED(可简写为-1):读取完整图像,包含Alpha通道。返回值:成功读取时返回Mat类型的图像数据(可理解为存储像素的矩阵);读取失败时返回None(常见原因:路径错误、文件损坏)。参数2flags:图像读取模式,常用值:参数1filename:图像文件的路径(绝对路径或相对路径),例如“test.jpg”(相对路径,图像需与代码文件在同一目录)、“C:\images\test.jpg”(Windows绝对路径)、“/home/user/images/test.jpg”(Linux/macOS绝对路径)。实现该功能需要用到几个核心函数,其功能与参数说明如下:本程序的核心功能的是:读取一张本地彩色图像,在窗口中显示图像,等待用户按键后关闭窗口,并将图像保存为新文件。1.4.1程序功能与核心函数2.cv2.imshow():在窗口中显示图像——语法:cv2.imshow(winname,mat)注意:cv2.imshow()需配合cv2.waitKey()使用,否则窗口会一闪而过(原因:imshow()创建的窗口需要等待键盘输入才能保持显示)。返回值:用户按下的键对应的ASCII码(例如,按下“ESC”键返回27)。参数delay:等待时间(单位:毫秒),delay=0表示无限等待,直到用户按下任意键;delay>0表示等待指定毫秒后自动关闭。参数1winname:窗口名称(字符串),例如“OriginalImage”;参数2mat:要显示的图像数据(cv2.imread()的返回值)。实现该功能需要用到几个核心函数,其功能与参数说明如下:3.cv2.waitKey():等待键盘输入——语法:cv2.waitKey(delay)本程序的核心功能的是:读取一张本地彩色图像,在窗口中显示图像,等待用户按键后关闭窗口,并将图像保存为新文件。1.4.1程序功能与核心函数4.cv2.destroyAllWindows():关闭所有OpenCV创建的窗口参数2mat:要保存的图像数据;参数1filename:保存的文件名(需包含后缀,如“output.jpg”、“result.png”);语法:cv2.destroyAllWindows()作用:在程序结束前关闭所有窗口,释放内存,避免资源占用。实现该功能需要用到几个核心函数,其功能与参数说明如下:5.cv2.imwrite():保存图像到本地——语法:cv2.imwrite(filename,mat)返回值:保存成功返回True,失败返回False(常见原因:路径不存在、权限不足)。1.4.2完整代码实现1.4.2完整代码实现准备一张测试图像(推荐使用JPG或PNG格式),将图像文件与接下来要创建的Python代码文件放在同一目录下(方便使用相对路径),将图像文件命名为“test.jpg”。从硬盘读取图像文件到内存中读取模式图像路径test.jpg表示相对路径,图像需与代码文件在同一目录;cv2.IMREAD_COLOR表示读取为彩色图。第一步、第二步1.4.2完整代码实现第三步在屏幕上创建一个窗口,并将图像数据显示出来。cv2.imshow()显示的图像数据窗口的名字配合cv2.waitKey()使用1.4.2完整代码实现等待键盘输入参数是等待的毫秒数,如果设为`0`,则表示无限期等待,直到用户按下任意键。没有它,窗口会一闪而过,你根本看不清。第四步1.4.2完整代码实现将图像保存到本地保存的图像数据保存的文件名第五步1.4.2完整代码实现在程序结束前,关闭所有由OpenCV创建的窗口,释放它们占用的内存资源。第六步1.4.2完整代码实现1.4.3程序运行与结果分析1.命令行运行2.IDE运行命令行运行:按下键盘上Win+R组合键,打开“运行”对话框,输入cmd后按回车键,打开命令行,进入代码文件所在目录,输入pythonfirst_opencv.py回车;使用PyCharm、VSCode等PythonIDE打开代码文件,点击“运行”按钮。以VSCode为例,选择“Run”选项卡下的“RunWithoutDebugging”即可运行程序。1.4.3程序运行与结果分析步骤1:运行程序将上述代码保存为“first_opencv.py”,通过以下方式运行:图1-13用VSCode运行程序代码1.4.3程序运行与结果分析步骤2:观察运行结果1.若图像读取成功,会弹出一个标题为“OriginalImage”的窗口,窗口中显示“test.jpg”的彩色图像,如图1-14所示。2.此时程序处于等待状态,你可以:图1-14
“OriginalImage”窗口按下键盘上的任意键,窗口会关闭,程序结束;按下“s”键(小写),程序会将图像保存为“saved_image.jpg”,并在命令行输出“图像保存成功!”,之后关闭窗口。1.4.3程序运行与结果分析步骤3:常见运行故障排查1.故障1:弹出窗口显示“无响应”症状:运行程序后,图像窗口显示“无响应”,无法操作。解决:确保代码中包含cv2.waitKey(0),且waitKey()的参数不为0时,等待时间足够长(例如waitKey(5000)表示等待5秒);若仍无响应,可强制关闭程序后重新运行。2.故障2:提示“图像读取失败”症状:命令行输出“图像读取失败!请检查图像路径是否正确。”排查:①确认图像文件与代码文件在同一目录;②若使用绝对路径,检查路径是否正确(Windows路径需用“\”或“/”,例如“C:/images/test.jpg”);③确认图像文件未损坏(可尝试用画图工具打开图像)。1.4.4功能扩展:显示灰度图与单通道图功能扩展:显示灰度图与单通道图在上述基础上,我们可以扩展程序功能——读取彩色图像后,将其转为灰度图和单通道图(如B通道),并在不同窗口中显示,帮助大家理解OpenCV对图像通道的处理方式。显示灰度图与单通道图1.4.4扩展:显示灰度图与单通道图显示灰度图与单通道图1.4.4扩展:显示灰度图与单通道图1.4.4扩展:显示灰度图与单通道图运行代码后,会弹出3个窗口,分别显示彩色图、灰度图和B通道图,如图1-15所示。图1-15:彩色图、灰度图和B通道图任务实践任务实践为巩固本模块所学知识,请完成以下实践任务,任务难度适,参照之前的案例依葫芦画瓢即可,读者可尝试独立完成。任务实践任务一
图像的读取和显示1.准备一张包含人物或风景的彩色图像(文件名为“task.jpg”),与代码文件放在同一目录;2.编写Python代码,实现以下功能:读取“task.jpg”彩色图像;将彩色图像转为灰度图;提取彩色图像的B通道,构建仅B通道有值、G/R通道为0的图像(参考1.5.4节的cv2.merge()方法);创建3个窗口,分别显示“原图(彩色)”“灰度图”“B通道图”;等待用户按下“q”键后,保存灰度图为“task_gray.jpg”,并关闭所有窗口;3.运行代码,验证功能是否正常,并截图保存运行结果(后续可作为作业提交)。任务实践任务一
图像的读取和显示操作提示:1.构建B通道图时,需导入numpy库(importnumpyasnp),np.zeros_like(b_channel)用于创建与B通道尺寸相同的全0数组;2.判断用户按键时,使用key==ord('q'),确保按下“q”键才执行保存操作;3.若运行中遇到问题,可参考1.3节和1.4节的故障排查方法,或查阅OpenCV官方文档。拓展实训实训1图像基础属性分析与格式转换熟练获取图像的尺寸、通道数、像素类型等基础属性;1.掌握彩色图转灰度图的实现方法;2.完成图像在JPG、PNG格式间的转换,并观察文件大小差异。3.实训目标准备1张普通彩色图像(如“flower.jpg”,分辨率建议640×480左右,避免过大影响处理速度);素材方面实训准备实训1图像基础属性分析与格式转换确保Python+OpenCV环境可用(系统环境或conda虚拟环境均可);环境方面记事本或VSCode(用于编写代码)、文件管理器(查看保存后的图像文件)。工具方面实训1图像基础属性分析与格式转换①读取图像并打印属性;②
彩色图转灰度图;③
保存为不同格式并对比大小。实训步骤本次实训需完成3个核心操作:创建文件“exp1_image_basic.py”,代码如下实训1图像基础属性分析与格式转换创建文件“exp1_image_basic.py”,代码如下实训1图像基础属性分析与格式转换成功读取返回一个包含三个数字的元组uint8,范围是0到255表示从黑到白的灰度,或者每个颜色通道的强度。图像的总像素数量总像素=高度
×
宽度
×
通道数创建文件“exp1_image_basic.py”,代码如下实训1图像基础属性分析与格式转换cvtColor:颜色空间转换函数;COLOR_BGR2GRAY:从‘BGR格式’转换到‘GRAY灰度格式’;注意:OpenCV默认的彩色通道顺序是BGR(蓝-绿-红),而不是我们常见的RGB!(高度,宽度),单通道创建文件“exp1_image_basic.py”,代码如下实训1图像基础属性分析与格式转换将彩色原图保存为PNG格式PNG格式通常比JPG大创建文件“exp1_image_basic.py”,代码如下实训1图像基础属性分析与格式转换打开两个窗口程序停止按下任意键创建文件“exp1_image_basic.py”,代码如下实训1图像基础属性分析与格式转换实训1图像基础属性分析与格式转换
1.放置图像:将“flower.jpg”与代码文件放在同一文件夹;
2.运行代码:打开命令行,进入文件夹,输入pythonexp1_image_basic.py;
4.记录结果:将命令行输出的属性信息和文件大小抄录到实训报告中。
3.验证结果:命令行输出:检查是否有“图像读取成功”“保存完成”等提示,属性值是否合理(如通道数为3,灰度图通道数为1);文件生成:查看文件夹,是否新增“flower_color.png”和“flower_gray.jpg”;窗口显示:是否弹出两个窗口,分别显示彩色原图和灰度图;运行与验证实训结果与分析实训1图像基础属性分析与格式转换图1-16实验一运行结果格式差异:PNG格式因无损压缩,相同图像的文件大小通常大于JPG(有损压缩);灰度图因仅1个通道,比彩色图(3通道)的文件小约2/3;属性规律:彩色图的shape有3个值(高、宽、通道),灰度图仅2个值(高、宽);运行结果:如图1-16所示。实训2简单按键交互与图像保存掌握cv2.waitKey()的按键监听功能;1.实现“按指定键保存图像、按Q键退出”的交互逻辑;2.巩固图像显示与窗口关闭的操作。3.实训目标使用素材库的“task.jpg”。素材方面实训准备ord('键名')可获取按键的ASCII码(如ord('S')对应83,ord('q')对应113)。提前理解实训2简单按键交互与图像保存①
显示彩色原图和灰度图;②
按“S”键(大写)保存灰度图;③
按“q”键(小写)关闭窗口退出。实训步骤设计3个核心交互:实训2简单按键交互与图像保存创建文件“exp2_key_interaction.py”,代码如下图像转换为灰度图实训2简单按键交互与图像保存实训2简单按键交互与图像保存创建文件“exp2_key_interaction.py”,代码如下循
环记录‘灰度图是否已经被保存过’‘S’键按下的情况“ord('S')
用于获取大写字母‘S’的ASCII码保
存True:防止重复保存确保了灰度图只被保存一次,提升了程序的健壮性和用户体验。退出立即跳出当前的whileTrue循环实训2简单按键交互与图像保存创建文件“exp2_key_interaction.py”,代码如下释放系统资源实训2简单按键交互与图像保存创建文件“exp2_key_interaction.py”,代码如下
1.运行代码:输入pythonexp2_key_interaction.py;
2.测试交互:按“S”键:命令行显示“已保存”,查看文件夹是否新增“saved_gray.jpg”;再次按“S”键:因save_flag为True,不会重复保存(避免覆盖);按“q”键:窗口关闭,程序正常退出;
3.异常测试:若误点窗口“关闭”按钮,再按“q”键仍能退出(代码鲁棒性设计)。运行与验证实训2简单按键交互与图像保存实训结果与分析按键监听:whileTrue循环配合waitKey(100)实现“
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年住房和城乡建设领域现场专业人员考试设备安装质量员专业基础知识综合试题及答案
- 2026年职业卫生技术服务专业技术人员考试(放射卫生检测与评价)模拟题及答案伊春
- 2026年编程英语能力测试题及答案
- 坚守食品安全筑牢健康堡垒小学三年级主题班会课件
- 远离心理健康隐患护航健康成长小学主题班会课件
- 变更订单商品型号数量客户名称确认函7篇范文
- 软件工程师项目执行与代码质量KPI考核表
- 2026年一级建造师执业资格考试(建设工程项目管理)冲刺试题及答案
- 对市场调研合作事宜的回复函4篇
- 2026年精算师《非寿险精算》真题练习卷
- 四川嘉陵江文化旅游投资集团有限公司2026年公开招聘工作人员(17人)笔试参考试题及答案详解
- 2026-2030中国遥控式水下机器人行业市场发展趋势与前景展望战略分析研究报告
- 公路工程施工安全风险分析报告
- 2026年大兴安岭地区总工会工会社会工作者招聘37人考试备考题库及答案详解
- 《2026年全国新闻记者职业资格》考试试题及答案
- 基于AI的C语言程序设计(微课版)课件 第3章 AI大模型助力编程学习
- 2026年高考新高考I卷生物真题卷附答案
- 2026年精益生产工程师中级模拟试题
- 中粮集团产品开发流程培训课件
- 挂靠合同:公会挂靠-(范本)
- 义务教育(数学)课程标准(2022版)(含2022年新增和修订部分)
评论
0/150
提交评论